Ask HN: Do you contribute to open source projects?
I'm looking to contribute to open source projects but just could not find the time since coding without pay is so foreign to me. I could not just approach my employer and ask if I could help code this open source project. What is your motivation for doing such things, thanks to all the open source maintainers!
83 comments
[ 4.1 ms ] story [ 113 ms ] threadI try to use entirely free and open source software on my personal laptop (and I'm fortunate enough that my work environment is fairly similar too).
When I encounter some kind of annoying issue, I'll take a look at the code that caused the problem (and sometimes the components that it interacts with), and if there's a way to improve the situation then I'll consider putting together at least an issue report.
In practice the time and thought required to write a code-level description of the problem can sometimes be 90% of the work to develop a fix, so frequently the issue report is followed swiftly by a patch / pull request / merge request.
Review, merge and release can all take time - at various points I've had over twenty changes pending to more than ten separate projects.
It's extremely satisfying and encouraging to wake up or check your email and be reminded about some kind of nagging bug/problem that you encountered months or even years ago and to hear that it's now solved for you and anyone else who would have run into the same issue in future.
A suggestion, although everyone can learn in their own way: consider treating open source contributions the same way that you might do for small tickets or tasks at work.
Supplying a patch, giving feedback for issues, is the least I can do to give back to the people who took the time to write that code.
Because some projects I contribute to are also relevant in my day job I get a deeper insight into that part. Money/financial aspects do not play into that decision but I'd be twisting the truth if I didn't admit the positive impact FOSS had to my career.
Having contributed to FOSS projects in a public way also says something about the person I'm interviewing. If most of my stack is built on FOSS and an applicant comes along with a cool CV but has not one contribution to a single project it's immediately a hard pass from me. I never put applicants through silly technical screening sessions unless they are fresh outta university. But no public commits are a red-flag for senior engineers.
The lack of public commits does not signal whether or not someone is a competent senior engineer.
So, maybe I was lucky the plan worked, but it was not just a coincidence.
BTW, that company is still in full hiring attitude, in case you like working on free software.
I don't know how you can avoid doing it at all, unless you're just messily working around issues in your codebase or leaving a TODO or item in the backlog to fix it in the distant future. (Which can be a better use of time sometimes of course.)
My motivation to do so is if everyone puts in just a little bit of extra effort to contribute upstream we can get many people making small patches. It's nice for a contributor to see folks care (as opposed to just complaining of issues).
Expecting to get paid for your first contributions to open source sounds, to me, like the wrong motivation.
More seriously; no. The license gives no warranty for the software, or potential issues I encounter. If the developer would take more professional responsibility there, I might feel like funding or contributing somehow. But if their approach is this is free stuff no strings, my approach is freely take and provide no guarantees in return.
Was it the use of “more”?
Do such folks have some indelible claim to the premise and conclusion and a monopoly on refusing to go further for others?
I did nothing but establish my line in the sand is similar to theirs. If you’re hurt by it, find a therapist.
My motivation is saving others the ass-ache I just went through. There’s no reason in my mind that I should have a fix and not share it, especially after all of the lift/savings I've gotten over the years from emacs, Linux, apache, svn, git, etc.
..sort of. I'm sure I could make time if I were determined enough, but it's hard to feel good about spending 8+ hours working in front of a screen, then spending more hours working in front of a screen for free. It's probably more of a mental + physical health concern than anything else.
If it's the former, then regardless of what what place it used to have in your life, programming right now is just your job. There's no more room for it in other parts of your life because they're being occupied by the things you balance it out with. So my question stands: why would you like to do it?
If it's the latter, then why aren't you doing it already?
Now that I'm working full-time on open-source and my own company I can contribute more easily to projects like upgrading SQLite source in a few bindings libraries [0], [1], [2] when 3.38 came out.
If anyone is interested in contributing to open-source and wants a bit more guidance though I have a number of good "first timer" projects related to data tooling for [3]. Only expectation is that you have some experience with Go. Join discord.multiprocess.io, go to the #dev channel and say hi!
[0] https://github.com/mattn/go-sqlite3/pull/1019
[1] https://github.com/mapbox/node-sqlite3/pull/1550
[2] https://github.com/JoshuaWise/better-sqlite3/pull/778
[3] https://github.com/multiprocessio/datastation
Ask your employer if you can submit documentation or a patch to a project if you notice a bug. It's unlikely they would say no as long as it contains no proprietary information. You can give them a whole pitch about how open source is free software that somebody else maintains, and that you contributing a fix is much cheaper than you having to maintain your own private patches and apply and fix them every time the software is changed upstream. It's saving them time and money. It also gives your company a better reputation among hackers, making it easier to hire good people.
The idea is to put together a project that gives an overview of how to set up a minimal viable web application from scratch via all the different frameworks.
For each framework the project features a self-explanatory shell script that builds a web app with routing, templates and user accounts. So there is no ambiguity of how to reproduce the results. And it is even possible to just copy&paste the steps into a fresh Linux installation, see the framework in action and build your own application on top of it.
The scripts have one part for every aspect like routing, templates, accounts. So if you want to compare how the frameworks do templating, you can look at the "Let's use templates" part and have a quick overview of how it is done in Django, Laravel, Flask, Symfony, NextJS...
So far, 5 developers have joined and contributed. Django and Flask are complete. Laravel and Symfony have routing and templates but no user accounts yet. I wonder if this distribution of contributions across the frameworks is somehow telling about their ecosystems?
Here is the repo:
https://github.com/no-gravity/web_app_from_scratch
I've just recently started doing it, and I only put in a few hours each week. Slow and steady wins the race. My motivation is three-fold: First, it's gratifying to give something back to software I love using for free. Second, I learn a lot. Third, if I ever want to work with one of the companies who are stewarding these repos, it gives me a leg up in the application process.
0: https://github.com/owid/owid-grapher
1: https://github.com/shafy/fugu
2: https://github.com/mapzy/mapzy
It is in my best interest to send my changes to the library maintainer so that i do not have to maintain my own fork of the library.
It is not always in best interest of maintainers to merge my changes because it is either more work for them or their purposes for the library are too different from mine.
Maintaining an open source project is a lot of work and i would also like to hear more from maintainers about their motivation to do it.
Also sometimes I write something for myself, then think it's possible someone else might find it useful, so I release it as FOSS on say Github. Later I see people watching it, starring it and forking it, and even adding commits to their forks, so I figure someone else must have found it useful.
I've used open source whenever possible for a long time but never "gave back". It was a matter of finding the right thing to contribute to. When I found and used SolveSpace, I loved the tool but found it a bit limited in capability. Looking at the dates on the repository I found that the areas I thought needed work hadn't been touched in at least 2 years. Then I realized if I wanted it to be better it's my job to make it so. It's still the only project I really contribute to, but there are a couple others I may get involved in at some point. I no longer have a lot of time for programming as a hobby, so I view this as me doing volunteer work. It's a bit of responsibility I've decided to take on at least as much as it is a fun thing.
Your reasons for doing and your choice of project will be your own.
I use Linux and most s/w I've installed are free and open source. Also, not software as such, but I've benefitted a lot from free programming learning resources.
So, I try to pay it forward similarly by answering questions on stackoverflow/reddit/etc, giving away free copies of my ebooks, open sourcing s/w I've written, promoting open source, etc.
See also: https://opensource.guide/how-to-contribute/ - section 4 has handy links to find projects