I asked for help optimizing my Julia code, now it's someone's package?

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 :slight_smile: 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?

3 Likes

My understanding is that any code anyone posts this forum is under MIT-license, which is very permissive license.

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.

12 Likes

I totally understand and don’t mind. It’s just to know the limits of what I should share and the ethical considerations within the community.

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.

3 Likes

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.

14 Likes

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.

5 Likes

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.

9 Likes

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.

1 Like

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 :slight_smile:
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.

4 Likes

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.

32 Likes

Sorry, I didn’t remember correctly. Here is the post I got the wrong impression: Copyright issues for code excerpts

1 Like

It was resolved as soon as it came up. This was me trying to understand how the community handles such things more than anything.

5 Likes

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.

29 Likes

I would be interested in learning which package did this, so a link to the relevant commit/PR would be appreciated.

2 Likes

Repo was taken down immediately after I said I wasn’t cool with it.

2 Likes

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.

5 Likes

Not even the slightest! The speed of Julia is worth it :laughing:

5 Likes

I’m a bit confused…

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:

  1. You posted a question about a well-known algorithm asking for help with optimization
  2. A bunch of people chimed in, and managed to speed up your implementation a bunch
  3. You learned a bunch, everyone was friendly and helpful
  4. 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)

14 Likes

Frankly I missed the part about the notification.

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.

1 Like