A little about the open-source initiative
For those of you unfamiliar with this term or this philosophy, this is a small discussion of the concept. The software development production process varies between the “classic” commercial development model and the open-source model. The later relies on two essentially main principles which are collaborative and peer to peer development. Everything from the source code to documentation is publicly released for free where any other developer can upgrade, modify and debug the product’s latest release. Even using the code as part or as whole in other projects is permitted under conditions described in the license accompanying the release.
Licensing is “a great alternative to just releasing your work into the public domain or granting permissions on a case-by-case basis” according to Cameron Chapman. Since this topic takes rigorous discussion I will leave it to the author mentioned previously to disclose the different types of licensing as well as the pros and cons of each in her article “A Short Guide To Open-Source And Similar Licenses” released by Smashing Magazine.
Many famous projects are open-source such as Linux, Apache, PHP, Symbian (Mobile OS), WordPress, Drupal, ecommerce, Moodle, Mozilla Firefox and others. The advantages are numerous, and being an open-source fanatic my opinion is personal as it is far from being objective. However, I will focus on the benefits of peer to peer, collaborative development.
Software development companies rely solely on the experience of their team of developers. While some being highly talented and knowledgeable their work falls short when confronted by the combination of worldwide talents from different academic and cultural backgrounds, intelligence levels, experience, needs and methodologies of thought. One might wonder how such projects succeed if the work load is spread worldwide. Well, the alpha version of the application or work in general is done by the author. After the first release, if this application caught the attention of other developers they will initiate contact with the author, or sometimes without the need of contact, they will work on enhancing or extending the final product. In many situations the original author is not able to continue working on the project (for a multitude of reasons). Hence, any other individual can pick up the work of the previous contributors and continue producing future releases. However, some projects die out as people have lost interest in them andor their level of complexity requires much dedication which no one is ready to offer.
Open source projects are developed voluntarily! Some contributors rely on donations to keep the project ongoing; these donations are not for personal profit though, they are spent on the production costs (if existing) which the author along with contributors should not bare alone.
As you have probably wondered by now: how can these contributors communicate as some aspects of development require brain storming and discussions? The answer is easy: either via email or forums or through IRC networks. IRC stands for Internet Relay Chat. Projects such as Freenode have provided the developers with networks to which they can connect, join topic oriented channels and have random real-time discussions. This brings us to our focal topic: Why are communities important?
Communities and what they can offer
Online development communities are a valuable asset without which acquiring help regarding any projects becomes a tedious task. Have you imagined a place where you can ask for help and benefit from direct answers from a diversity of experienced users? This place exists. Many like to subscribe to forums and ask their questions there, but the process of discussing the topic takes a certain amount of time which some do not have. Thus a less time consuming solution should exist. And it does. Freenode!
Any individual with an IRC client such as (mIRC, xChat, irssi etc…) can connect to the network, join a channel and ask for help. Of course the individuals maintaining the networks and the channels are also volunteering their time, therefore patience and modesty are advised.
Now I will describe the process of connecting to the freenode network below.
Downloading an IRC client
1. Irssi: http://www.irssi.org/download#binaries Download the binaries depending on your OS (available for almost all OSs).
2. mIRC: http://www.mirc.com/get.html mIRC is restricted to windows users, however the versions available are compatible with Windows 2000/XP/Vista/7.
3. xChat: http://xchat.org/ xChat is an open-source irc client, available for Windows and Fedora (GNU/Linux) Oss however the source code is released hence you can download and compile your own version of xChat.
After grabbing your copy, you can install and run it.
Next in the input bar you can type: /server irc.freenode.net 6667 to establish a connection to the server. /server is the client command which allows you to connect to a server, irc.freenode.net is the server name and 6667 is the port to connect to.
Once done you can join a channel such as #linux via typing: /join #linux
# is used before a channel name to depict that the characters for it are the channel name.
A demonstration of how to connect to freenode using irssi can be found in the screenshots below. Three small tips:
- Some channels require you to register a username before joining to insure you are not a spam bot. You can have more information about this by typing: /msg nickserv help
- Some servers do not require a port number for you to connect.
- In irssi you have to press ALT+2 (3, 4, …, or any number to change chat windows)
Another topic I wish to discuss is Q & A websites such as stackoverflow. Stackoverflow has become a self sustained community where you are free to ask questions, free to answer them and free to seek the knowledge.
The amazing aspect of stackoverflow resides in the fact that the community is not moderated by employees or voluntary developers dedicated to keep the site functional. No, it is maintained by developersprogrammers who once asked questions themselves and now have given a fair amount of valuable answers which gave them reputation. Reputation (through points) will allow members to moderate the website, edit information and provide model answers.
Stackoverflow has become a part of my life now. I contribute daily and answer as many questions as my experience allows. The members are extremely helpful and knowledgeable. No question is left with no answer unless, of course, the question is redundant.
Importance of being a part of a community
The benefits are numerous. However I will discuss a few:
1. You will be exposed to topics you were not aware of before.
2. You can answer questions you did not think you could have answered before.
3. Helping other members can refresh your memory about a certain topic especially with regard to programming.
4. Without even contributing and just by being a spectator you can learn from other members questions and answers.
5. You can make important contacts and promote yourself in the development community.
I cannot go over all of the benefits as they are tremendous, but the above should motivate you enough to give it a try at least.
A first step to being an open-source developer or contributor is being part of the community. Voluntary help is beneficial for many parties. The open-source initiative has been the ground block for countless successful projects which shaped the online world to what it is today.
Please leave your comments, as your feedback will allow me to write more efficiently in future blogposts. Kindly keep in mind that while I cannot discuss all aspects of the topics I believe I have compiled a small amount of knowledge to get you started. Just in case anything slipped out of my mind, please notify me via a comment or by email.