The thrill of Open Source contributions
I often joke that a good embedded software developer should be lazy, good at understanding compilation errors and great at googling.
Well, it's a joke. But still it's not really that wrong. To develop good embedded systems one must use as much Open Source as possible. Linux, Busybox, GCC, Qt, Mesa, OSTree - the list is long.
For a couple of years ago I started to skip the lazy part. Maybe I have the some of the knowledge as the cool boys and girls out on the Internet that develop these great Open Source software's. Maybe I can help out in some Open Source project to make it better. Maybe I can get my name in the git logs. I'm not trying to say that I'm now this Open Source guru that has done thousands of patches, I'm still well below 100. But doing these fixes or adding features have made me appreciate the thrill of working in the Open Source world. In the beginning I was so nervous about the review process. What if someone thinks I'm an idiot? Well I already know some people do think I'm an idiot - so a couple more will not kill me. But what if my code isn't good enough? Well I will learn from the feedback.
In the beginning it was really hard to fix something. I started with the Qt project because frankly I love it! So what to fix? It's not like there are a nice list with stuff to fix. I started reading the mailing list, looking in the bug database etc. But then a client at work needed a fix in Qt that I made. It was a simple new feature in QML. After a day of hacking I was done, at least I thought I was. After some reviewing my fix had changed name, added automatic tests, written documentations. But then it got accepted to Qt and I was super happy.
After doing some patches I have become a much better software developer. The reason is simple - I've read a lot of code, seen different coding styles, seen different ways of solving problems. Many things that I've learned from Open Source is something that I can use and implement in my daily work.
So my advice to you is to challenge your self to make som contributions to the Open Source world!
Here are some tips before contributing
- Make sure your code looks the same as the rest of the code (naming conventions, indentation, tab-style etc.).
- Implement test cases if the project has automatic tests.
- Test your code thoroughly, even more thoroughly then you think. Does it build in both debug and release mode, maybe test it on a different platform for example.
- Talk to the developers. IRC is a great tool and most big projects use IRC to communicate a bit more informal. Ask a simple question there.
- Understand that the maintainers will look at a newbie-developers code extremely carefully and also it might take time to get your code reviewed.
- Act on review comments and suggestions fast, don't wait many days to fix your patches after reviews.
Happy hacking!