Hey there! This post is mainly targeted to the students of PES Institute of Technology/PES University, Bangalore. If you are not, and are new to the Open Source Movement, you can still find a lot of useful information here. You can also learn the ways of PES Open Source, and join our movement in making educational institutions a place of more knowledge and productivity.
Firstly, I want you to think what an open source project means to you. Give it a minute. Done? Now did you think one of these?
- Getting access to the source code of the project.
- Getting/Using the project for free (as in free beer).
- Using the project’s source to either contribute to it or create a fork of the project. ie, ability to modify the project freely (as in free libre).
Well, if you did, you are somewhat on the right track. But wait, this was kind of easy. Now, I want you think what “Open Source” means. Woah, now that wasn’t simple right? Understanding what Open Source stands for, deep down, is equivalent to understanding what open source projects stand for.
As a beginner to the world of open source, you must first make it a point to understand the philosophy of open source. This is critical in understanding why there are open source projects and what the community stands for.
The concept of open source has been there since the stone age, surely even before, but let’s stick to the stone age for now as a start. People from back then have shared the knowledge on how to start a fire, how to make tools, how to hunt using tools, how to build houses, how to cultivate crops, how to cook, how to this and how to that… the list goes on! Open Source has been driving our lives each and every moment. But how? Through knowledge. Knowledge is the key takeaway with Open Source. It’s the only takeaway in this world that’s also a giveaway. At the core, Open Source stands for spreading knowledge and making the world a better place to live in; the one entity that empowers everything and everyone. It is important to understand this since all open source projects are driven by this philosophy. It is this immense passion towards learning and learning through sharing that has built the open source world. To be a successful open source enthusiast, realising this passion within you is very essential.
Over the next few sections of the post, I’m going to give a broad perspective of the world of Open Source and come back to what you can start doing. Firstly, We saw three points above, which give a fair idea some typical traits of open source projects. These traits are the results of what a given open source project stands for. We learnt what Open Source is actually about deep down. So now, we’ll see why and how projects are open sourced.
Why are projects open sourced?
There is no general reason why projects are open soourced. However, there are some values that a project picks up when open sourced.
- Trust This is one of the two biggest reasons why projects go open source. If the source is open then the public has the freedom to inspect the code and verify that the software is doing what it’s supposed to do and nothing more or less, thus making it feel more secure and stable.
- Community Most open source projects have a community of developers, contributors and users. This is a big advantage as you can interact with the community regarding the project, providing you the support to use it or also contribute to it.
- Control Open source software gives users the control they would want on the software since they will know what it is and isn’t. Also, users can request features or enhancements by interacting with the community.
- Source of Knowledge As discussed before, the best trait of any open source project is the amount of knowledge you gain by learning about the project, the domain, the design, the implementation and its way of usage. And all this for free of cost.
Some companies/corporations also open source projects as a PR move, but with a stronger intention to give something back to public. This helps in mutual growth a well established product built over open source tools or libraries, in a way appreciating them and launching an open source project of their own. On a side note, many a times, open source projects are prefered when developing long term projects as they are more likely to be standing as a community with the source also being open. Imagine if you were to use a closed-source library in a project of yours and its development stops! It’s a risk that is mostly not taken.
The problems with Open Source software/projects
Mind you, that these may not apply to some projects. There are quite a lot of truly exceptional open source projects!
- The development Philosophy (minor problem) Usually, open source development follows the “Release Early, Release Often” philosophy. The reason behind this is to attract more developers, funding and early users so that the project is a success. This however causes a side effect - It sometimes feels that the development is slow and version 1.0 might never be seen.
- Development pace may vary Most of the developers are volunteers, who contribute out of passion in their free time. In projects where there aren’t many contributors, or less contributors to core ares of the software, this might create some problems and delays when one (or few) go offline for a while.
- Documentation One of the most troublesome issue with Open Source Software is documentation. There is often inadequate documentation in projects which cause a great deal of inconvenience to new users, contributors and adopters of the project. This is not the case with all, but many projects. It mainly arises because contributors concentrate more towards working on the project than on documenting it (which takes a great deal of time and decreases productivity).
- Compatibility Issues There are cases when project X uses library Y v2.0 and another project Z which uses library Y v1.5; and now you can’t install X and Z in your system, mainly because incompatibility. Although this is not frequent, it does happen, and a hard one to solve at that.
- Hard code base, not intuitive One of the tricky problems in software development is the codebase. The developers work on a project without realizing parts, or most of the codebase might be hard for users to understand. This is not a problem with OSS per se, but it is more apparent here. This happens mainly because the developers feel that the piece of code is intuitive, which is true for them as they wrote it, but may not be the case for others. Many projects don’t attract enough contributors for this very reason - The codebase is too hard to understand.
- Licensing issues There are many open source licenses with subtle differences in their licensing guidelines. Although most aren’t too restrictive, some are. This creates problems when trying to use an open source library in a software which might be proprietary and commercial, for example. Each license has governing rules for usage and distribution of the software using it. Here’s a comparison of free and open-source software licenses
- User Experience This doesn’t get expressed enough. Many open source tools and software give an interface over the command line as they target other developers first. The UI which is then developed is not good enough to impress end-users. Even if the software is feature-rich, a less impressive experience bids adieu to users.
- Accountability This is a very visible problem with quite a lot of open source projects. If the software developed breaks down in any format, there is no one to hold resoponsible but the community itself, which doesn’t seem fair. In such situations, users of such projects would have to find a solution and fix it themselves.
- Maintainability With a lot of rapid development, there is lesser bandwidth to maintain current releases. As a result, you might see projects being maintained at a lower pace or sometimes, very little.
Phew! That was a lot of disadvantages listed down. But wait, these are all specific problems with open source software, the benefits are very broad and their magnitude are much higher! Also, knowing these issues will help you to contribute better.
Okay, so till now, we looked at open source software, their benefits and their disadvantages. But I’ve saved the best part for the last.
Open Source for a student
Yes, you read it right! Open Source projects are a boon and a treasure for students. Why so? Because they are professionally crafted, coded and maintainted projects. And for a student, this is as good as Atlantis’s lost treasure! Being exposed to open source projects and contributing to them makes you look at developing projects differently, exposing you to industry standard conventions, coding styles, design patterns and much more. You will gain a lot of maturity in the field and get first-hand experience in handling live products. What is even more exciting is that there are hundreds of open source project for you to contribute to! You can contribute to the project of your choice and get the most out of it.
So how do you begin?
Let’s now see how you can begin contributing to open source projects. Remember, that all experts started as beginners. So if you don’t know coding yet, or have very little experience in programming, no issues! Open source projects have something for everyone at every level! However, (oh, that’s a not a good word to hear…) as it goes with other domains too, there is a learning curve associated with being involved in open source projects - Tools. There are few tools which become essential while contributing to open source projects. It is almost necessary for you to know about version controlling with either SVN or Git, but most preferably Git. All open source projects are version controlled (you can search about this on the web), mostly using SVN or Git. Nowadays its mainly Git or Mercurial, but I’d recommend you to learn Git. Having an understanding of how Git works and how you use it will help to a great extent, since everything is managed through Git.
Well, now that’ve established that you need to know about version controlling, you can move ahead on to searching for tasks to do by beginners on projects. These typically involve bug fixing, documentation writeup, etc which even though doesn’t sound like a great contribution, takes you a long way! Believe me, even for a small task, as simple as fixing a bug, you’ll be -
- Learning how to access source code, get a copy on your local machine.
- Set up the development environment necessary for building executing the project; to test things out.
- Reading code written by others, which is an extremely professional task; something which is also not easy in the corporate industry.
- Understanding what you need to fix, where and how you need to do it.
- Communicating with people across the globe - open source projects are not written by your neighbours!
- Professionally solving problems - the solution to fix the bug may look simple, but its implementation must take into account the philosophy and conventions used in the project, the language constraints, the architecture of the project, etc. What you are now doing here is something no less than what is done professionally by understanding end-to-end, the project’s details and implementing your solution accordingly.
- Learning how your changes are reflected back to the project’s main codebase.
- Partying when your changes go live!
And now you can realise why prior open source contribution is valued high in the industry. The amount of experience and knowledge you gain are more than what you can practically learn in your academics. No doubt that you gain techincal knowledge and understanding of Computer Science and Information Technology in your academics, but active participation in open source projects give you a very practical and professional experience and an understanding of concepts at a different level.
And that’s not all, the feeling you get when assited by a community of developers willing to help, the satisfaction you get in contributing to the community, the connections you make by networking with others are immeasurable.
This, for now is an introduction to the open source world for you. I’ll update in this post soon with some points from where you can begin from. If you have any queries, you can post in the PES Open Source Facebook group, email me at firstname.lastname@example.org or email PES Open Source at email@example.com.
Ciao! Let Knowledge Flow From All Sides.