Tuesday, October 12, 2010
What is open source?
Open source is a method of developing software. According to Wikipedia, "Open source describes practices in production and development that promote access to the end product's source materials". It means that anyone can access the source code of open source software. In addition, it should allow anyone to modify the source code and distribute it to anyone. Linux and Firefox are representative results of open source. Therefore, if you find some problems and have any proposals, you can modify the source code and submit the code to the maintainers. If your code makes sense, it could be merged into the open source software. If so, many people could use the software you contributed. Isn't this amazing ?
Why people start open source projects
There are various reasons why people start open source projects. Most of these projects don't have a big plan. They just start the project for meeting their needs. Some people start their projects just for fun. For example, Linus Tovalds, the creator of Linux kernel, just started Linux kernel project for fun during a long winter vacation when he was a university student. Of course, there was a small motivation. The Unix workstation machine was very expensive, so he had to go to the university to use it. Therefore, he wanted a Unix-compatible operating system to be run on his own 386 PC. After that, many people joined his small project. Currently, Linux kernel has been used for running digital TVs, Android phones, and other embedded devices. Although there are some open source projects that are started by companies for strategic reasons, most open source projects are started for trivial reasons.
Why developers should join open source projects
First, you can improve your development skills in terms of reading the code and getting reviewed by other open source developers. In the case of Linux kernel, it supports various types of computer architecture, and the source code has been highly optimized for a long time. In addition, many open source software have been verified in terms of being included in commercial software.
Second, you can learn the latest high technology, because open source projects are always open for new technology. So, anyone can improve the funtionalities of open source software and suggest new features. In my case, I fixed Korean Hangul typing problem in WebKit, a browser engine, used for Safari and Chrome browser.
Third, you can experience development process of software product because the big open source products: Linux kernel, Firefox, and OpenOffice, have a similar life cycle and organization like commercial software such as Microsoft Windows and Office. For instance, an open source project also requires individuals in various roles such as developer, tester, graphic designer, technical evangelist , educator and so on. In addition, most decisions about the project makes through mailing list, or IRC. If you have contributed for many years and have a good reputation, you can have a bigger say in the project. Finally, you can make friends with open source people from all over the world. There are various nationalities and ethnicities in the community. Some people are students, some are older. Nevertheless, they can share their thoughts and ideas for the same goal. For the above reasons, I strongly recommend that you participate in the open source projects even if you are not a software programmer.
Why I participate in open source projects.
Actually, I am an experienced programmer. I have more than 12 years of software development experience. However, I just spent my most of my development career for working on proprietary software. Fortunately, I met good open source people in the open source community and learned how to be involved in open source projects. In addition, I was able to work on open source software and had the chance to work together with the community in my previous company. It was a valuable experience because I learned how to write good quality software in terms of code review and code reading. Also, I could contribute my abilities and effort to open source projects for the public interest.
Currently, I am working on the WebKit, GNOME, Mozilla projects as a full-time open source developer. Although I am not making money working on these projects, I'm enjoying the life of an open source developer for the time being . Of course, there are ways of making money working on open source projects. In the future, when I have more experience with open source development, I will try to start my own open source project just for fun.