I have been so happy with the amazing efforts this platform offers to newbies like me who have fallen in love with this amazing language.
I learn well by doing so I have been implementing classical ML algorithms from scratch in Julia and learning how the language works on the fly.
My latest project was implementing the K-means clustering algorithm and it worked and was already 5x faster than the sklearn implementation so I decided to take it up a notch and released the code here for optimization tips.
The feedback was amazing and the implementation is currently 13x times faster now.
I woke up to a message from one of the contributors that he had made a package from the now optimized code WITHOUT even notifying about any such project!
I know thatās itās the open-source world but that was the last thing I expected when I published my code for optimization tips.
I feel robbed of my learning experience as Iām even yet to publish the results of the experiment on my blog.
Should users be too wary of sharing their code when asking for tips or asking questions?
Well, there are ārisksāā¦ Arguably, your code is not really yours as it was a collective effort and no warning was published on your side about not publishing it. If you want credit, contact the person that published it and try to solve it that way. Welcome to free software.
When one develop code one automatically receives the copyright. By default the all rights reserved license applies. In other contexts it may have other licenses (e.g., when contributing to a repository with X license it is either by convention or a Contributorās Agreement that the collection is of X license). The MIT license families (e.g., MIT, MIT Expat, ISC, etc.) are quite permissive. If you want to protect attribution for instance consider using the Zlib license. I use ISC for most of my work and Zlib for academic work. Regardless, even if you take code from MIT, it is good practice to keep the code precedence.
I feel with you.
There is a view on the issue from a lawyers viewpoint, which is, as @zgornel describes it, it wasnāt restricted, there was no warning of the OP, it was some kind of collective effort => so donāt complain, all is fine.
But on the other side, there is something we call a community and this behaviour is not what one should expect from a community or better from community members. It is just bad manners and should be named like this. The one who acts like this should stand up, apologize and give credit to OP and the other contributors.
To be on the legal side in respect to licences and open source is no excuse for being rude.
There is more to a community and to social beings to be a good and healthy society than just doing what is not forbidden by law.
Donāt let it get you down. Keep doing your thing. Anyone who serially takes code from public domain and does not attribute authorship will eventually gain a reputation in that public. lve seen it happen in other communities.
Where did you get that understanding?
I canāt find anything like that written down anywhere.
AFAIK (and IANAL) all code posted here remains entirely yours.
You have copyright on it. No license is automatically granted.
And if someone posts a improved version, then they have copyright on their changes.
For me itās even less about the legal license and stuff like but more about the standards within the community.
I would have loved to jump on a Julia project with someone more experienced since I barely know my way around Julia (and programming) plus itās not like K-means is my algorithm.
Itās just how it went from 0 to 100 without my involvement is what shocked me.
Donāt let it disturb you too much. It was bad manners yet positive as the code might have gotten lost. You can still get credit. Next time, make a repository and dump all code there (with a license of your choice). In this way, youāre covered. I stopped caring about personal credit long time ago as I usually benefit from code of way better quality than my own
Generally the free software world is pretty competitive and one has to āzenā itās way through it but itās worth the effort once one reconciles gains and losses.
Actually, user contributions are licensed under a CC-BY-NC-SA license under the terms of service. This is compatible with but much more restrictive than the terms of an MIT license, and is not free/open-source. (However, snippets of code ā² 15 lines are typically considered not copyrightable; see also the discussion here.)
That being said, I think that this is less a question of legality than one of basic courtesy. I completely agree that it would have been more respectful to check with you when creating a package (or a pull request to an existing package) based on the responses to your query.
I would encourage you to try contacting the person amicably in case this was an oversight and see if you can resolve the situation in a more satisfactory way. If you have trouble making things right and want a neutral third party to talk with both of you, feel free to contact the Julia Stewards.
I appreciate your understanding and willingness to let bygones be bygones.
That said, Iād urge folks to adhere to common standards of courtesy, and next time to discuss such moves with the major participants before publishing the code. It takes very little time, shows due respect for their work, and provides a learning opportunity for people at different stages of their development as open-source contributors.
Thanks. Even though this was an unpleasant situation, I am glad it was resolved, and appreciate that you handled it in a friendly and dispassionate manner.
I donāt think this kind of behavior is characteristic of the Julia community, and I hope it does not tarnish your experience with the language.
This sounds like they notified you without notifying you?
I also donāt really understand this. Your learning experience was your own, helped by the community. You can (and still should!) write up the experience. You can even say āJulia is so great, look how easy it is to go from idea to a package: someone was able to take the code I optimized and make it available for everyone!ā You still get credit - the original thread is publicly accessible and time stamped.
Iām clearly in the minority here, and several people whose opinions I respect (like Tamas and Tim) have chimed in here with opinions that are different than mine, so I want to understand.
It sounds to me like:
You posted a question about a well-known algorithm asking for help with optimization
A bunch of people chimed in, and managed to speed up your implementation a bunch
You learned a bunch, everyone was friendly and helpful
Someone threw the final code into a package and let you know theyād done that
This all seems great to me, and Iām struggling to see the problem. Sure, perhaps the optimal thing would have been too tell you before hand, but the fact that the person reached out to you in the first place, and immediately took it down when you raised an objection demonstrates that it was all done in good faith.
The fact that the code is no longer readily accessible in a package seems like a loss to me. Given the response to the objection, Iām certain the person would have been willing to give you ample credit - do you need your name on the commit tree?
(Iām not trying to be a pain in the ass here, Iām just genuinely perplexed by the responses and want to be educated)
I think that the proper way to do this is ask permission before, but given that the code was a collaborative effort this is best done topic where it was developed. After posting, at least an announcement there would have been nice (was there one?).
In any case, it would be interesting to hear from the person who posted the code in the repo. They may have acted in good faith.
For cases that end well, there is a trade-off between just moving on or using them as a concrete example to develop community norms. Here I feel I lack verifiable information about what happened since the repo was deleted (so I donāt know how much of this was copy-paste, was there any value added like tests and documentation, etc), so I would suggest just moving on.