Ask HN: Do you contribute to open source projects?

68 points by dirtylowprofile ↗ HN
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 ] thread
Yes, although mostly in small, incremental ways.

I 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.

Valid reasons for me are: particular interest in a project, desire to learn a language/technique/framework, genuine and intrinsic interest in a community and the open source movement.
nitpick: 30 or so years later, can we still call Open Source a "movement"?
Yes
the point I'm trying to make is that open source is already the status-quo today. calling it a movement makes it sound like it might not be here to stay. movements come and go but open source is _the_ natural state for a SW to be in. the times when we had to battle Microsoft on ideological grounds on their claims that FOSS is a problem are long gone. Nobody at Microsoft today would claim that FOSS isn't here to stay without getting laughed at by their own colleagues.
Open source / free software and its ethos are more relevant than ever today. Cloud services, automobile software, and IoT devices are just a few examples of how computing is increasingly opaque to end users.
Certainly not as much as I used to, but yes I contribute to open source projects. It's a combination of making things I'm interested in, drive by patches for tools that almost do what I want or have a bug that I've managed to trigger, and chatting with others building things they're interested in. Being a maintainer is a different ballgame than contributing to a project without the long term responsibility, though both can scratch an itch and help develop new skillsets while helping to create new pieces of software.
I use FOSS in my personal computing needs which heavily intersects with my professional interests. Using 3rd party (FOSS) exposes me to bugs, issues with documentation, problems running things on esoteric hardware, security issues, eventually performance issues. Because of this I often need feedback from maintainers and I'm at their mercy for how fast my issue is resolved.

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 idea that senior engineers need public commits to be even considered for a job seems a little extreme to me. There are myriad reasons why an extremely competent senior engineer might not have public commits.

The lack of public commits does not signal whether or not someone is a competent senior engineer.

I guess if the rest of the CV was a really strong match, I'd give them a chance but they'd have to do a "technical interview" same as any other junior. I can only speak for myself that I haven't seen many CV's in my environment where 98% of the stack is built on FOSS and 100% of the tooling uses FOSS that an expert in that field has never contributed anything to a FOSS project, has never asked a question on an issue or created an issue (and also lacks any other public facing work like personal projects, talks, blogs, etc). I'd also interview them if they were recommended by a colleague.
Big corp I work for will not allow me to write single line of code for open source projects. I might leak something confidential this way. The reality is not black and white like you try to paint it. Heck I had problems with leaking confidential information when supplied electrical diagram with mechanical drawing for one of the suppliers.
how much does your employer benefit from FOSS? if they do use it but prevent their own people from giving back it sounds like they're terrible people but also pretty dumb because they're losing out on building knowhow about those systems among their own workforce (I'm obviously not shocked if that is the case).
That’s exactly the case. We are allowed to do open source request, legal team writes a list what can we do (don’t share, don’t distribute, don’t release, internal use only, etc) and this goes on like this. Since legal team takes weeks, we write our own half baked solutions and use open source extremely seldom.
I'm lucky enough to work for an employer that defaults to open. The project I'm working on right now is open source.
Me too, though not entirely by luck: when I was looking for a job I specifically went for smallish, open source friendly, remote friendly companies. Then I started contributing to the projects they worked on in my free time, met the people at FOSDEM and chatted with them. This made the hiring process much smoother.

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.

It's useful to do components independently as open source, to make sure they work in any context, then integrate them into your main project. This makes both of them better products.
I have made PRs to patch bugs I find on projects that I have used in production applications. Sadly that is as much as I have done, I would love to contribute more but I'm so burned out from work I don't have the energy to do more outside of it.
I try to contribute fixes/features I want and think make sense to upstream as much as I can, on projects I'm using either for myself or at work. I've mostly worked for companies that recognise it's worth the extra time to get a patch in a good state to upstream/do the docs/PR properly to avoid being forced to use a fork.
There are many ways to contribute to Open Source projects, depending on the project and what sort of contributions, if any, it is open to. There are financial contributions, bug reports, feedback, a thank you / letting the project maintainers know how you use the project, promoting the project to others, documentation improvements, code improvements, helping with infrastructure, verifying bug reports... its not just coding, and some of these you may be able to do with little or no time involved. All are forms of contribution. Not all Open Source projects are open to all of these, some aren't open to any of them (except perhaps promotion). So it is best to get familiar with the project by checking the site, docs, trackers, etc or maybe reaching out to the maintainers if you still have questions before jumping in.
I do it a few times a year because many open-source softwares have glaring bugs. This is true in the JS/TS world, at least.

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.)

I have contributed work I've done in the context of paid employment. Very very occasionally I do so outside of work (maybe I use a tool at home, it doesn't work properly for what I want, I patch it and send a PR upstream).

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).

My motivation has usually been to add features/fixes that *I* would consider useful for my particular use cases, and most times it's for software I use in my personal time or personal projects.

Expecting to get paid for your first contributions to open source sounds, to me, like the wrong motivation.

Yes by using them thereby giving the developers reason to get out of bed.

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.

Which is fine but why be so mean about it? Do you have the same attitude to benovalent people in real life?
You inferred a moral judgment where none was intended.

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.

I make incidental contributions, usually of the form of fixes to bugs I encounter or extensions of function that I need.

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.

I used to but the number of projects I use that enforce CLAs is ever increasing and I don't want to run to a lawyer every time I open a PR. My employers have been more than happy for me to contribute but lawyers aren't free (and I haven't worked somewhere with staff lawyers, yet).
I would really like to, but I've only had time when it's necessary for my full-time work.

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

Mind if I ask why you would really like to do it? It sounds like you view programming as just a job. A lot of the people who work on this stuff in their free time just view it as a hobby that they do for fun, not as a second job (although there are people like that, too). Why would you "like" to do something you apparently don't enjoy, and apparently would only do if you got paid to do it? I'm not being snarky, I'm honestly asking.
I don't view it as just a job. It started as a childhood hobby and will always be a part of who I am, but as I've gotten older I've found it more important to balance it out with physical/outdoor/social activities. I'd just spend way too long not moving.
If it's a matter of balance, then there are two possibilities: either you are currently approximately in balance with the amount of programming you do at work and would not do any more unless paid to do so (maybe not even then?), or the amount of programming you do at work is slightly below the balance point and you could do allow yourself to do a little bit more at home; say, 30-60 minutes a day.

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?

When I worked as an employee I contributed mostly just with docs fixes or bug reports (and not that often). I think it's mostly a mindset of seeing an issue yourself and noticing that others probably also are confused or misled by something so you go and report it!

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

I make things because I need them, and I open source them because it's a nice thing to do.

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.

I am building an open source web framework comparison. It is aimed at experienced developers who want to get a quick overview of how the current web framework landscape looks like. My intention is to make it a long-running project that will be an up-to-date reference point at any time in the future.

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 started an opensource project to solve a problem I was facing at the time. I continue to develop the project alongside another core maintainer. It's a rewarding process. We aren't beholden to any project managers or deadlines - we just hack on what we feel like, when we feel like it.
I contribute to Our World In Data [0] and some of the Rails repos. I also run my own open source projects [1][2].

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

Like everyone else i rely on open source libraries. I sometimes need to change them either to fix bugs that i encounter or to improve them in some way to better fit my purposes.

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.

Like the PP, I can be using a FOSS application or library and notice a bug, or try to run it against some unsupported device, or against the new version of something. I fix it for myself if I can, then I send the patch upstream. It is like stone soup - the original FOSS project implements something for their needs, I tweak it a little to work for me, and soon enough you have a program useful to a lot of people.

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.

>> What is your motivation for doing such things?

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.

>What is your motivation for doing such things

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

I have, but I barely do it at all because I have too many of my own projects to work on, and deciphering someone else's codebase isn't a good use of my time for the kinds of minor problems I'd be solving that someone else could solve better.