Ask HN: Do you contribute to open source? Why? Why not?
Hi,
We think that a lot of developers want to contribute to open source, but don't do it for various reasons. We want to gather more insights about it and try to improve it.
We made a small survey with questions about open source. Would mean a lot to us if you take part. It should take only a couple of minutes.
Link: https://fdier.co/mm23y7 At my company, engineers dedicate 10% of their work time to open source contributions outside of our core products. They are quite free to pick any project they want, as long as it benefits our particular community. Why do we do this? * It's a great perk for engineers. They contribute under their "personal" profiles, improving their own karma. * Growth of the community we come from lifts everyone, including the company as a whole. * We are grateful for what we get for free, and want to contribute back. * It's a nice argument when hiring. * It's a great way to skill up in the underlying technology. * It teaches about collaboration and the softer skills needed to get PRs merged. * It gives people to touch technologies they wouldn't learn on the job itself. Time to reveal the mystery and tell us how this magical workplace is called! <insert trendy silicon valley upstart here> Swiss :-) . Cryptosphere Systems. > Do you contribute to open source? Why? Why... Yes, I do. I have been contributing to the open-source community for ±10 years. Many of my personal projects pass years unnoticed, but once in a while I receive an email from a stranger on the Internet saying “Thank you” for building a tool they found useful one way or another. Some times students, some times people without programming skills, some times IT professionals. To answer your second question: “Why?” I make contributions to the open-source community as a way to pay back the solutions they have provided in the past. Nowadays I spend much less time building my own tools and more time searching online for open-source solutions, and fortunately I often find good ones, then I say “thank you” by reporting issues, giving feedback, implementing features, fixing bugs, etc. I'm not contributing to any free / open source projects. I think that that FOSS is fueling the technology monopolies, despite originally aiming at the exact opposite. I think it has driven many software markets in the ground like for example tooling. I cannot believe that we use absolutely horrible software like GDB in 2020. I think there is a lot of left learning ideology behind hte FOSS development and also these types of products have a limited way in which they can be monetized. P.S. I know I'm gonna get a lot of hate, but I think that as a developer you can spend your time better elsewhere :) I agree with that. 20 years ago I started using Delphi and it was great. The debugger then was much better than GDB is now; the form designer better than current ides; it compiles projects faster on 20 year old hardware than current languages compile on current hardware; with copy-on-write strings it basically had mutability xor aliasing for strings. But no one wants to use Delphi anymore, because it is not open-source. Unfortunately I made my projects open-source, and now need to keep maintaining them.
But there is no advantage being open-source. There are almost no contributions, because no one knows Delphi/Pascal anymore. There are basically no maintained, working libraries to use.
I have even ported my projects to FreePascal/Lazarus, the open-source Delphi alternative. But that made everything worse. Open-source is incredible buggy. Things I had to deal with this week: Recent binutils versions have relro enabled by default, but their relro is not compatible with FreePascal. With relro enabled my apps do not start anymore. The string builder in FreePascal allocates buffers that are too small for its data. When GDB catches an exception in a GTK2 GUI while a menu is open, it freezes the entire X server. You have to leave the X server and kill gdb from another tty, before you can even move the mouse again. Can you elaborate on how foss fuels tech monopolies? I've never understood that argument and would like to hear more. GP has a good point. Here is the general FOSS playbook of nearly every Big Tech company. 1 Use FOSS as a way to attract the best talent in addition to the salary. But remember that even a very high salary for a permanently scandalous company like Facebook may not be a good enough incentive, but FOSS will likely push some folks over the fence. ("Yes, I work for Microsoft. But inside Microsoft, I work on FOSS stuff!" - Scott Hanselman). 2 Get a lot of unpaid volunteers looking at and improving your code, not to mention the free documentation and all the free support on the project's GitHub issues. 3 Cherry pick the interesting stuff in the FOSS projects for BigTechCo employees and hand off the more boring plumbing work to the unpaid volunteers, thus massively increasing total FOSS output. This can often be done by simply ignoring the boring stuff for a while since it is quite clear that FOSS devotees abhor the code vacuum. 4 Back to step 1. Yes, FOSS seems to be perpetuating the tech monopoly. As a manager of a big tech company you are incentivized to increase profit and minimize cost. Might be slightly more painful to use a FOSS toolchain in your team, but your costs are zero. In comparison look at how much does a commercial IDE license like CLion costs per user. It is a zero resistance environment. It gives the opportunity of the small to grow without any costs, but it also doesn't limit how big the big ones can get. Sorry, but that's complete nonsense in every aspect. No competent manager will skimp on tools when they're paying today's developer salaries because those are the far bigger cost. You can buy plenty of expensive tools from the hourly rate equivalent of an engineer spending hours every week dealing with the shortcomings of crappy tools. Conversely, a manager whose incompetence manifests as skimping on tools will just choose the cheapest commercial tool when there are no open source tools available, and that is almost guaranteed to be worse. In fact, it's common for dysfunctional companies to insist on using commercial tools that are both very expensive and much more painful to use than readily available open source tools. Edit: > why is noone focusing on the fact that they are using software for free and profiting out of the product? Because it is much better than having no free software and personal projects, self-study, and bootstrapped startups being only possible for the rich. I mean, there are Copyleft licenses that aim to prevent commercial use of free software, but isn't that exactly the "left leaning ideology" you didn't seem to like much above? So if I understand correctly, the argument is that it drives down costs as opposed to proprietary alternatives. But how does this lead to monopolies? Is it something like was suggested below by tsukurimashou, that companies takeover foss software so that it is essentially theirs? But I don't see how that is functional ly different from them just developing that software themselves (apart from higher costs for them).
In this model at least everyone can see the source and has the freedom to use and modify as they see fit. I feel like there is still a step here that I'm missing. It is a zero resistance environment. It gives the opportunity of the small to grow without any costs, but it also doesn't limit how big the big ones can get. I see. To me that is then not something that would specifically lead to monopolies. I think he means what Google, Amazon, Microsoft are doing, they pick open source software, they hire programmers to extend the projects and they make it their own In a competitive market, economic profit can be positive in the short run but will be driven to zero in the long run. FOSS is but one of many competitive forces. It just so happens that thee long-run state is when profit equals marginal cost, and for software that is zero ("free") That is a hard theory to sell, since it happens only in places where the FOSS has established dominance and (for example) the state of the top contender is horrible. There is simply no economic incentive to pursue a better debugger. Yet Microsoft does so in Visual Studio, and apps like IDA Pro exist and are quite expensive. And there's a whole lot of proprietary ARM debugging platforms. Even in FOSS there is also lldb and edb.
(And gdb can be made more palatable by a front end such as ddd.) I hope you walk the talk and don't use any open-source software. But regarding your claim about fueling the technology monopolies. In what way is everyone running Windows or OSX because there are no open-source alternatives less a monopoly? When did I say I'm not using it? I said I'm not contributing to it. Right, so you use the free fruits of people's hard work. And then you complain about them and their left-leaning ideology fueling technology monopolies. Oh, so where do you spend your time? There are many Indie projects out there who have very less likelyhood of being taken over by a big org. Define "contribute". If you mean "write code for", then honestly I make very few code contributions. In the 00s, my employer was suspicious of developers contributing to open source, to the point of banning it contractually. I've since changed employer, but I have a legacy of that early experience. On the other hand, I contribute to open source projects in many ways - I give money to many projects I use, attend meetups, give presentations at conferences, coach people, write answers on StackOverflow. For me all of that counts. Even a bug report is a contribution. Especially a well written and researched bug report. Many typical users lack the skill to do that, and a software developer would have an ample amount of it. I don't. Have donated though. I rarely program outside of work. And if I do, I just want toy with some ideas, not to actually build something. Most of my learning is done on work time. It certainly feels nice to take regular breaks from screens, bugs, things not working because the stars aren't aligned just the right way and solving abstract problems. Enjoying the simple tings. I do, as much as I can. The main reason is that it's important for me to contribute to the common good regardless of monetary reasons, if I can afford to do so.
This is true both at a moral/political level, and at a personal level (feeling useful). It's also a way to give back to projects I use, as I can't donate money to all of them as much as they are worth. I also like to program just for fun (ie. not useful stuff), and today it's as easy to make my useless stuff open source rather than keeping it private; so I might as well make it open source, because sometimes other people actually find it useful. Do I contribute to open source? Seldom (<10 PRs merged) Why? - When I discover issues in an otherwise active library or starter, I fix them and submit a PR - When I need a minor feature in a library and the codebase is readable - When I study online courses, I submit PRs with notes and solutions to help others (and myself with motivation) Why not? - Because it's a thankless job (not getting paid for contributions) - Because of lack of expertise Yes. I use a lot of open source software. Often it doesn’t do something I’d like it to, or it misbehaves, and I’m fortunate enough to be able to spare time to contribute. Plus it’s a great way to learn new things or get a better understanding of how things you use work, and you often get to meet people doing interesting work! I would like to contribute more. But the first reason I don't do it is the amount of time it requires.
Investigating the issue, opening a ticket, digging in someone else's code, coding the fix, testing it, opening a PR, updating following review's comments, etc, can take hours. I created an open source developer tool (https://mockoon.com). And I can see the amount of time it takes for other people to contribute. On my side, reviewing or correcting other people contribution is already a lot of work.
I think open source is fantastic but can really become a full time job. :)
I really believe companies using open source libraries and software should start contributing financially or by dedicating employee's time to contribute. We are in 2019 and this must be seen as an investment. I contribute to open source at work and on my free time. At work I contribute because I want to improve something I spent my time on figuring out (eg. documentation, bug fixes, features) so I don't have to do it again later and hopefully someone else can enjoy it too. On my free time I contribute for the same reason I play music, skateboard or play video games: it's fun. I have gained tons of things from contributing (experience and knowledge, connections) even if I don't expect to get anything from it. I have also faced the darker side of OSS: the angry users who haven't spent a dime, the "go kill yourself" messages, the dislikes, the time spent wasting time on things that wouldn't happen. At times like that I just remind myself: I am doing this for fun and I can stop when it's not fun anymore. I do. Reasons for me: * I like building things * I feel like we are relying on OSS a lot, this only works if we contribute back, too * It's a great way to improve (workflow, coding, communication) * So far it was mostly a nice experience - I've got the pleasure to get to know some awesome folks I contribute as much as I can, but I don't usually have much time that I can use at work so 99% of it is done in my own time. Right now I'm maintaining a small project for converting markdown into pdf's[0], and I've picked up maintaining the StatsD project[1]. I do it for two reasons, first the enjoyment. I really like working on problems of a smaller scope, without a full business around it. I love being able to think of something and knock out some code for it and share it, rather than the code coming last. The second reason I try and contribute is because I generally believe it contributes positively to the world. I'm sure those who've read my code might disagree, but on the whole I think offering free tools to tackle common problems helps everyone. Even if it's not "exactly" how you want it to work, it's at least prior art to inspire new solutions. Personally I don't, but I know people who do and whilst meeting and chatting with them, they are very encouraging to newcomers who want to attract new contributors. Without them, most of all the software used by everyone would be non-existent. Why? Some of them tell me that this helps them improve their skills and allows transparency in the project which helps their project in being trustworthy than the alternatives. Promoting more FLOSS-based software. Why not? While for many years, it has been a voluntary endeavour for devs and they take donations or sponsorship to fund their development. On Github, unless you are lucky enough to be a celebrity programmer of a famous project, this is difficult for many to build such a reputation and release a useful project for free to get paid for it. Thus, GitHub has accelerated this entitlement and only the famous programmers with a solid fanbase will reap its benefits. I think it would be better to donate to an OSS org for more devs to get paid rather than to a specific individual/developer, unless they are the sole owner of the project. Does Wikipedia count?
Not too much. Mostly due to amount of work required and twice the amount to defend against the politicking about it. I use my own time to work on tooling I miss on my workstations/own servers [0]. I also have a knack for finding weird bugs in otherwise widely popular and stable software [1,2]. I spend some time on select subreddits (WireGuard for instance) and on IRC to help out when I can. I do it mostly because it's fun, and I learn some new stuff. Not much is applicable on my day-to-day job though. [0] https://git.sr.ht/~moviuro [1] https://community.openvpn.net/openvpn/ticket/580 [2] https://marc.info/?l=postfix-users&m=157324715117972&w=2 I try sometimes but not that interested tbh. It boils down to my experience with PRs. they ignore it forever without a comment sometimes, other times it takes a lot of back and forth discussion which takes up valuable time. I wanted to contribute in other ways too but I alwayd run into roadblocks such as how bigger projects want you to have or build reputation first and they "frown upon" not using your real name and email. I am not saying any if that is bad or unreasonable, just incompatible with my requirements. Ymmv, I greatly appreciate all contributors. I wish more foss projects that are full blown apps offered commercial support though, it makes it easier to find people that can commit more time and resources. I donate to the fsf. At one point I realized how much free software my company was using. Thanks to it I was getting paid. I thought it was only fair to give back. Of course it should have been my company that should have done that, but they were greedy morons at the time. I rarely (pretty much never) contribute, but I write a lot of software and put it in the public domain. Why? What I write has no commercial value (I think), but in case it is useful to someone, I do not want to put any legal stuff in their way. I maintain my own open source project. I do this because I am a manager now, therefore I no longer writing code during my day job. However I still love to code, so an open source project is a perfect hobby for me. Yes I do. Because I genuinely want others to benefit from problems I've solved so that they can focus on other things. As a developer I struggled writing functional tests. So my company sponsors a team to build and maintain two OSS projects https://gauge.org and https://taiko.dev that makes testing reliable and simple. We are trying our best to listen to users and help them out. It's been the most rewarding part of my career. I contribute to open source packages when I am allowed to do it during work time. I do not do it from home, and this is mainly because getting pull requests approved (especially in the larger packages) is a huge pain in the ass (weird contributor license agreements, people bikeshedding for absolutely no reason, questions about my contribution that make no sense, etc). There is already more than enough social posturing and chest-thumping involved in getting through a work day and I'm not interested in having that be a part of my private life. For the most part, no I don't. Not entirely sure why, I guess it's just a lack of interest in the projects I've seen so far. Or perhaps the feeling there are people with skills better suited to it, or enough of a community there that my efforts wouldn't be necessary. Still, I guess there is one project (a video game level editor/modding tool) which I indirectly contribute to, in the sense of coding the website and working to get the web APIs working. Just haven't found many others in that situation. I'm not a dev and product management work might be valuable to OSS, but I'd feel like I'd be imposing things on devs and in a way it's hard to get a foot in the door (because everyone always knows better what should be done and why). I have the feeling it's similar for UX people. This way I stick to good bug reports and some small suggestions. I run a small software company, and I occasionally contribute to open source, mostly when a library is missing something that I want. To be sure that my work won't go unnoticed, I file the issue first and ask maintainers if they'd be open for the pull request. If they respond within a reasonable time frame, I start working on it. I do not, mostly because I work with proprietary software at work.
On my free time I submit bugs on GitHub for the projects I use (mostly small projects), with the technical solution inside, but not with PR (as i feel like the owner may have a broader view, and fix it in a better way). The most successful open source contributions I've made have always been when my employer required some bug fix or feature in a third party library and I was able to spend time submitting upstream patches. I do. It’s like torrenting, at least some people in the swarm have to seed to a certain ratio to keep the swarm going. It’s my way of paying back the benefits I’ve received from other people’s work on FOSS. I don't because almost all the projects I'd like to contribute to feel like they're far beyond my abilities as a developer. I hope that's just imposter syndrome but it might not be. The main thing is that you have to deal with people who have a strong personality but don't know what the fuck they are talking about. It's all that stuff that wears you down. I've contributed to a number of things during my time working with computers , unfortunately it has always been commits that fix things that stop me moving forward. nothing major. I do, as part of my work. But even if it wasn't part of my job, I'd want to be part of it. It's the best model for software development. (Lots of brains contributing.) I do a minute amount of greenfield open source, but I can’t see myself doing PRs etc. seems too much like the 9-5 work! I might do if my main job wasn’t as a dev. I do, at any possible occasion, for fixing/reporting bugs, proposing/discussing features, documenting, or simply curiosity and learning I used to but now I don't, for the same reasons I restrain posting on internet forums like these What are these reasons? Because I only have one life to live. Writing comments on internet forums and contributing to open source is roughly equivalent to pissing into a sea of piss. No - not enough free time. if anything my terrible merges usually detract from it Yup, I did contribute to some small OSS projects