Sunday, October 13, 2013

The Ultimate Resource and Collaboration Tools

There are two very special benefits of using version control and revision control systems. One of the most prevalent principles when working with files on a computer is rather simple: "Don't forget to hit 'Save' every few minutes or you risk losing everything you've done so far!"


Version control as well as other ways to keep track of software and its respective source code have become an important of a programmer's daily workflow. Systems like Git, Mercurial, Apache Subversion, and others all have a very similar goal: to allow a person to backup their work as many times as necessary while working. In fact, these are actually a double-sided coin so to speak. The main purpose of such tools is to keep work and data secure. An alternative purpose lies in how they can be used to publish code. The latter is known as "open-sourcing." To make a set of source code public means just about anybody with access to the Internet can access and use that code in some way.

There are various licenses that dictate how the source can be used. Usually, open-sourcing code allows for debugging or extending the product by people from all types of backgrounds. For instance, one of the most popular and current examples of this type of product would be reddit.com. Reddit is an extremely large forum online devoted to a nearly limitless array of topics. Last month, the number of unique visitors to Reddit was roughly 81,431,088*. Github.com is an online repository where the Reddit source code is hosted publicly. Users of Github can, for example, explore a page devoted to showing a list of bugs (organized by priority). They may find one that interests them and then proceed to debug it. Once that has been done, they can resubmit the related code with either a fix or theory of what might be causing the problem. As Reddit consists of such a large community that includes a sizable number of programmers, the opportunity to help out here and there adds to the experience of using the website.


Reddit is just one example of many. Github tends to be one of the most popular sites for open source code as it is based on the Git versioning system, which is quite secure**. The Git platform is a distributed revision control and source code management that makes working on new features simple and protecting progress.

Another immense advantage of open-sourcing code is that the average person can use what they find for inspiration and as a resource in different ways (permitting the respective project's license is appropriate). When I write code for iOS or OS X - among other platforms - I look online for examples of how other developers have accomplished certain tasks. The best analogy to explain this is: "why reinvent the wheel?" Not only that but sometimes entire libraries or frameworks of code can be included in a project as long as the original authors are cited.

Yet I think the best overall value of using open-sourced code is the idea that practically any person with sufficient skills can interpret it. Relating back to Reddit earlier, if you're a frequent visitor of the site and really appreciate a certain feature, you can actually dive into the code and learn how it was built. Open-source presents a level of education unparalleled in just about any other area.


*http://www.reddit.com/about/
**http://git-scm.com/about/info-assurance

2 comments:

  1. Great Article! You have clearly done your research and I like how you took a different perspective on open source. Version control is a great way to manage open source code. I believe that having the ability to fork a project and take it in new directions is a great way to encourage creativity and innovation. Any developer with an idea can fork an existing project and add to it and that project can be even more successful than the original project. Open collaboration sites have spawned a number of great programs. Only yesterday, I downloaded easy_install off Github to help with my project, and if it was a great help. If I had not, then I would have had to do a lot of work. I absolutely agree that there is no need to “reinvent the wheel”. I also agree that they have many benefits especially to someone who is learning programming and is a great way to get involved with new and upcoming projects. However, there are also a few downsides open source projects including security and privacy concerns, of course it is up to the discretion of the user but if an inexperienced user does then, it can backfire on them.

    ReplyDelete
  2. Wow! Your article is longer and more thorough than most of what I have seen so far. You start off with the all-to-familiar advice to save often when working on a computer, and then proceed to online project repositories such as Git and Mercurial. You properly define what open source software exactly is, and you even mention how the popular website Reddit is a form of open source (and cite specific numbers to boot!). Your quote “Why reinvent the wheel?” sums up the post excellently. I am glad that you took the time to write a reasonably long blog post. Best regards! :-)

    ReplyDelete