Closed marcglasberg closed 4 years ago
Hi @marcglasberg
Just looked into this issue and tried to understand what exactly has been copied? Is this https://github.com/jonataslaw/getx/blob/master/lib/src/utils/extensions/internacionalization.dart this is what you referring to?
Or is it basically the idea to use an extension method .i18n
which you claim to have been copied?
Thanks for your insights in this problem.
Sorry, but how would I use your library without even knowing about it? Using extensions as a translation was my idea since when it was on the master, and I discussed it here in an issue here, and using ".tr" as an abbreviation for 'translation "is intuitive, don't you think?
Okay, it looks like it's even worse than what I imagined. Your library doesn't use ".tr", so I honestly have no idea what you're talking about about plagiarism.
@stefandevo The idea is exactly the same, yes, but also the inner workings. My package has a very peculiar way of doing things, and this does exactly the same. Parts of the code are also the same, with names changed. It seems Jonatas thinks if he makes enough changes to the code he can claim it as his own, but open source doesn't work like that. You can see this Jonatas guy clearly doesn't understand that. He just said Your library doesn't use ".tr".
So, yes, he believes if he makes enough changes it becomes his work. It's even the case with issue https://github.com/jonataslaw/getx/issues/509 where he responded by making further changes to make it more difficult to see where the code comes from.
I also noticed this project's pubspec.yaml doesn't depend on a single third-party package. For a project this size, that tries to do a lot of unrelated stuff, that's unlikely. That makes me think it probably copied code from other packages, and clearly doesn't want to give credit to anyone but himself.
@marcglasberg maybe the idea is the same, but I checked the code, I really do not see what exactly he did copy. Can you please add some references to the line in this and your codebase to prove it. I am not sure you can claim using an extension method for translation as yours. I am doing such a thing for years in my C# code base, so maybe you copied the idea from C#? :-) Just to be clear, not trying to start a fight here, just trying to understand the issue which I cannot see. Thanks for clarifying,
@stefandevo It's not only the idea. It's the way of doing things, internally, and some code. I have documented some of it already, yes, but if I go through the work of having to prove this I will seek other remedies, like having this package removed from pub.dev for breaching of third party license. And if Jonatas is in Brazil like me, as I think he is, my lawyers will take legal action.
@stefandevo You do seem to be like a nice person, but this project and this Jonatas seems to be toxic. I advise you to stay clear of them.
Jonatas, você devia ter vergonha na cara.
Okay, I just looked at your library, and I couldn't find any similarity to my code. About using extensions, I used it since the master, just enter the Telegram of Flutterando and see how much I talked about it (maybe we had the same idea, or you may have been inspired by my conversations there to make your lib, the which is quite contradictory). But either way, I think you have no reason in that request, and I recommend that you close this issue and reconsider your words, or I will be required to make you prove it judicially, and I definitely don't want to do that, after all. , we are part of the same community, and we can solve everything with conversation. And I'm not saying that in a threatening tone, please don't understand it as something like that. But I also cannot tolerate issues that try to depreciate my work, because I can guarantee that 100% of the code came out of my idea, my head, which was even discussed in countless Brazilian forums that you are part of, long before you launched your lib. I just want to resolve this amicably, but if you insist on it, we are under the same jurisdiction, and I will be obliged to resolve this otherwise.
Honestly, it sounds like someone wanting part of the cake, I'm sad to see it in the community.
Say this: https://github.com/jonataslaw/getx/blob/master/lib/src/utils/extensions/internacionalization.dart has something to do with it: https://github.com/marcglasberg/i18n_extension/blob/master/lib/i18n_extension.dart
It is dishonest. Very dishonest.
You use a Widget with InheritedWidget to update the words and distribute the data across the tree. I use Getx itself for this, since Getx doesn't even use InheritedWidget. You use operator overloading, you have completely different methods from mine, and there is not a single line of similarity code. What you're doing is a crime, and I hope you reconsider every word you say, because I don't want to have to do it legally.
@marcglasberg I am going to keep out this conversation further but want to emphasize that you cannot claim the extension method idea. Sorry just check https://stackoverflow.com/questions/8242254/alternative-localization-with-extension-methods How can you claim something so common (post is from 2012, pretty sure the lib mentioned did not exist). So I rest my case.
Just one last point, I don't know if you saw the file's history, but it was built by many users, from all over the world (who certainly never heard of your package, like me), so I think your request that they are plagiarizing your code, from illogical, becomes absurd.
Just looking at the history, you will see numerous contributions, which we can quote: @lundin https://github.com/jonataslaw/getx/commit/ce3da41add18b7b057717428be8b46e6344493be
@jasonlaw https://github.com/jonataslaw/getx/pull/394/files
I can't speak for them, but I'm sure they never heard of your package.
His conduct above fits perfectly with the crimes of: Defamation (Art. 139, CPB), attributing a negative attribution to me. Calunia (Art. 138, CPB), when saying that I am plagiarizing his code, and Qualified Injury through the media (Art. 140, § 2, CPB). The github is also under notice, and my office law is chatting with email right now with the Microsoft legal about your conduct, which violates the terms of the community.
You accuse of plagiarism by saying that the code had modified methods from your library. However, anyone analyzing the source code can immediately see that this is a lie, and there is no similarity, neither in the form of execution, nor in the methods, so this is just an attempt by you to try to gain some popularity for your package on top of a more popular package. You also accuse GetX of using extensions to provide translations. I have been using this for at least 1 decade. Most developers have used this for a long time. Extensions was not created in dart, and was created by pressure from developers to include it in dart, to facilitate even what you say was your idea, internationalization. As Stefan pointed out, this was not a brilliant idea of yours, programmers around the world use this feature even before you code your first line in dart. I commented on that on launch day, in groups and forums, so you can't argue in any way that something about Getx's internationalization is somehow your code.
Well, I'm closing it, and I definitely think it ended here. Any other manifestation, I will understand as a request for judicialization, and my law firm is already aware of this.
@jonataslaw You were discussing it in forums one month AFTER I published my package, what does it prove?
@stefandevo In any case that's not copying the idea that what I am claiming, and frankly, I wouldn't mind the idea being copied. Also, extension methods are just syntactic sugar, there is nothing that can be done with them that couldn't be done before. You are misrepresenting my complain as "use extension methods for translation idea", which is of course absurd, as a means to attacking my argument. This is a red herring, and that's not what I am complaining about. Problem is adapting code and part of the implementation without attribution. Very well, as soon as I have the time I will organize the information I have, and see if I have enough to submit this to pub.dev mediation. Thanks.
Problem is adapting code and part of the implementation without attribution. Very well, as soon as I have the time I will organize the information I have, and see if I have enough to submit this to pub.dev mediation.
@marcglasberg I think this is getting out of hand for nothing; every line of code has been written over and over again. Any design pattern has been used over and over again. I am currently working on some enhancement for pub so I am ready the coding, learning things, and will use certain patterns, or even a full line of code (!) in my other projects. Am I stealing code? Am I stealing ideas? Am I stealing patterns? Hard to say, but in your opinion I am doing that.
It is a good thing this is closed here; if you have issues you want to discuss, do it through email and try to find an agreement (or not). And stop bragging about it on other forums like reddit. Be part of the community by working together or not.
@stefandevo Just to start:
From GetX (extension_navigation.dart):
void forceAppUpdate() {
void rebuild(Element el) {
el.markNeedsBuild();
el.visitChildren(rebuild);
}
(context as Element).visitChildren(rebuild);
}
From i18n_extension (i18n_widget.dart):
void _rebuildAllChildren(BuildContext context) {
void rebuild(Element el) {
el.markNeedsBuild();
el.visitChildren(rebuild);
}
(context as Element).visitChildren(rebuild);
}
@stefandevo Again, you are creating a red herring, and distorting my words. I'm sure there's absolutely no problem copying open source code or patters or ideas, as long as you attribute it correctly. It's not only the legal thing to do, it's also pure courtesy, which seems to be sorely lacking here. Thanks.
It has Chinese tutorials teaching how to make a fake loop for forced reconstruction of all children. Should I stop using the name "context" in the build as well. I think I've seen enough.
@jonataslaw Your Chinese link is translated from this StackOverflow question:
This question was answered BY ME. I am the source of this information.
My original StackOverflow answer, as well as the two links you provided have a link to my i18n_package. If you continue reading in your link you find this:
IMPORTANT: This is a hack, and you should only do this if you
know what you are doing, and have strong reason to do so.
One example where this is necessary is in my internationalization
package: i18_extension.
@marcglasberg So basically you answered a question and provided with a solution to do X. From that moment - even if this is placed on other sites, tutorials, etc, - you are the sole owner of this snippet. So every snippet found on Stackoverflow is from now on copyrighted material and can only be used with a note in the source code where you found the line of code. If you are so protective of your lines of code, why do you post them to help other people. Mind blowing (and no, this is not another red herring).
@marcglasberg I got news for you:
https://github.com/Alllaa/movies_flut/blob/c1d0764f9c3a7cb19ed2d4741a31457b21848653/lib/screens/favourite_screen.dart#L112 https://github.com/denispinna/interval_timer/blob/47df94788f470f312cf00eb9a679ec390ed8581c/lib/util.dart https://github.com/AlexeySidorov/Flutter-apps/blob/4299c01f653351454ba157535b667f2edc0eef21/lib/components/toolbar.dart#L95 https://github.com/Abbie-n/SCAMP-Assesment/blob/7294ff7a5eb4cf89b8238fdaa9482d2bfb42a9e1/covidTracker/lib/ui/views/countries/countries.dart#L95 https://github.com/Borumer/North-Star/blob/c25de3494cefe8d0da6ac9c81c431d0e871da3b6/lib/main.dart#L72 https://github.com/andrewbenington/ShareQuote/blob/d223e4d8e6f0965834ba02e01273348fd1c7e9f3/lib/Utils/Utils.dart#L15 https://github.com/jxin31415/Stock_Marketplace/blob/a8211841d32c6511b7b01561b370e3f5615a7e61/lib/JournalPages/JournalElement.dart#L157
should I continue ?
If you need more links, please let me know ... I suggest that you start claiming your piece of code on there github repos as well ...
All these people can use my snippet of code, since my StackOverflow answer was there to help others, no problem. This Jonatas guy can use it also. I have no problem with that, so it's another red herring.
However, you want me to believe that right after I published my package, he independently thought about creating translations that work by translating the original string instead of a key (just like mine), then you use maps for the translations where the keys are the locales (just like mine), and then use a getter without a context to run the translations (just like mine), everything exactly like mine. By chance.
And then all that was missing was a way for him to rebuild the tree when the locale changes. And then, by chance, purely chance, he happened to find exactly MY Stackoverflow answer, and also failed to see the link to my package, right below the answer?
But, you know, I really doubt he got that from my StackOverflow answer (or the Chinese translation, as he claimed to have used), because there, there is no empty line before the (context as Element).visitChildren(rebuild);
while in my package there is. And in his package there is. By chance, of course.
Anyway, I think each person reading this can make their own opinion about all this.
In any case, the above code was just the start of my research. If I have the time I'm sure I'm going to find a lot more. No doubt the excuses will pile up too. Bye.
Hi Jonataslaw,
You copied the idea and code from my translations library https://pub.dev/packages/i18n_extension into his package, with no attribution whatsoever.
Changed my extension from
.i18n
to his.tr
, simplified a few things, removed a few features, changed names, and this is it.Open source is free, but it doesn't mean you can base your code in other people's code without attribution.
It seems to be a recurring problem with this project: https://github.com/jonataslaw/getx/issues/509