For as long as we can remember, programmers were expected to be hidden away in a sealed cavern. They should have their eyes stare at a computer screen and their fingers punch at keyboard nonstop. At the end, a marvelous technology toy would appear on the screen that would have the power to control the world. Fortunately, it is not true anymore.
Nowadays, programmers, or software engineers as we like to call ourselves, are very likely to work with someone else either on “big bucks” closed projects or small open-source projects. We don't work in an isolated environment because we prefer open space so that we can share what we do and create quality software faster. For software developers, this poses a problem. How can we work and share our code with each other? Imagine I write my code yesterday but it is sluggish and hard to understand. The next day, somebody in my group jumps in and improve it. The problem is my code does not look the same as it did yesterday. So I start looking around and spend my precious time to figure out the changes that he made.
In the past, computer scientists anticipated this problem and they solved it. A version control system was created; some examples are CVS and Subversion. At first, the version control systems were proprietary but then they started to become open-source and free to the world. The main feature is to allow developers to make changes directly to a central repository, an online place to hold the code. Unfortunately, if many developers contribute to a project, they have to wait for their turn to make changes to the code so that nobody would have mess up somebody's work by accidentally deleting, moving, changing, or replacing the “everyone” code.
These centralized version control system tended to work better in the previous decades because at that time computers were slow and people had a tendency to make changes at a meeting before implementing those changes in code. But in the present, things seem to move very fast. Developers have more high speed connections and more powerful computers. Moreover, developers are now expected to come up with new features and have them demoed at a meeting within a few hours.
To help these developers in these modern situations, a new version control system was born. Git is created by Linux creator Linus Torvalds. Git is an open-source project and categorized as distributed version control. At first Git was only for version control of code, but now Git can help people keep track changes of many types of file such as text files or images. The idea is when you want to make changes to a project, you check it out. It means you copy the whole project to your own computer and start typing code in. You create new features on your version of the project while Git takes care of the rest. When you are ready to submit your changes to the central repository, all you have to do it is submit your code to merge with the existing code. Git lets other developers know what changes you have made and what changes others have made. These things keep the code relevant for all developers working under the same project so that during a sprint, a group can come up with many more features instead of the group solely work for one feature.
Unfortunately, Git is a command line tool. Every programmer has to type some commands in a black computer terminal to make git work as it is supposed to. In order to make it more visual appealing and easier to control with a click-and-drag from a mouse, Github is born.
Github provides a web based interface for Git. It also has nice features for collaboration and task management tools. One of the features is the social network graph which is to display how collaborators work on their versions of a repository. Many other features includes analytics tools and feeds. While private repositories cost money, public repositories are completely free. That explains why since Github's birth in 2008 the service has grown so fast that now it becomes the most popular collaborating tools for developers.
According to Techcrunch website, on 1/16/2013 Github had 3 million developers. And on Github website on 12/23/2013, 10 million repositories existed. It now becomes a platform for many popular open source projects such as the website template, Bootstrap; the web app server tool, NodeJS; the blogging platform, Ghost; and many others.
Open source projects are great because they are free to the world. And bugs can be fixed quickly and found easily by a large group of contributors. Everyone can see the code and none can create malicious code. This put open source projects in an advantage stage over some closed project. We are using a lot of open source software; among them are web standards such as HTML and CSS, Javascript and our operating systems may come from the same open source software Unix.
More and more people are contributing to open source projects that they believe can make the world better. These projects won't have much feature impact if they do not have a strong version control system, such as Git to manage their code and a powerful Git platform, such as Github to back it up. In a recent move to hire more qualified programmers, many companies start to look at a student's contribution to open-source projects in order to examine closely his coding skill. As long as open technology is still useful and advances our science frontier forward, open-source projects such as Git and service Github play an important role in software engineering.
References
Nowadays, programmers, or software engineers as we like to call ourselves, are very likely to work with someone else either on “big bucks” closed projects or small open-source projects. We don't work in an isolated environment because we prefer open space so that we can share what we do and create quality software faster. For software developers, this poses a problem. How can we work and share our code with each other? Imagine I write my code yesterday but it is sluggish and hard to understand. The next day, somebody in my group jumps in and improve it. The problem is my code does not look the same as it did yesterday. So I start looking around and spend my precious time to figure out the changes that he made.
In the past, computer scientists anticipated this problem and they solved it. A version control system was created; some examples are CVS and Subversion. At first, the version control systems were proprietary but then they started to become open-source and free to the world. The main feature is to allow developers to make changes directly to a central repository, an online place to hold the code. Unfortunately, if many developers contribute to a project, they have to wait for their turn to make changes to the code so that nobody would have mess up somebody's work by accidentally deleting, moving, changing, or replacing the “everyone” code.
These centralized version control system tended to work better in the previous decades because at that time computers were slow and people had a tendency to make changes at a meeting before implementing those changes in code. But in the present, things seem to move very fast. Developers have more high speed connections and more powerful computers. Moreover, developers are now expected to come up with new features and have them demoed at a meeting within a few hours.
To help these developers in these modern situations, a new version control system was born. Git is created by Linux creator Linus Torvalds. Git is an open-source project and categorized as distributed version control. At first Git was only for version control of code, but now Git can help people keep track changes of many types of file such as text files or images. The idea is when you want to make changes to a project, you check it out. It means you copy the whole project to your own computer and start typing code in. You create new features on your version of the project while Git takes care of the rest. When you are ready to submit your changes to the central repository, all you have to do it is submit your code to merge with the existing code. Git lets other developers know what changes you have made and what changes others have made. These things keep the code relevant for all developers working under the same project so that during a sprint, a group can come up with many more features instead of the group solely work for one feature.Unfortunately, Git is a command line tool. Every programmer has to type some commands in a black computer terminal to make git work as it is supposed to. In order to make it more visual appealing and easier to control with a click-and-drag from a mouse, Github is born.
Github provides a web based interface for Git. It also has nice features for collaboration and task management tools. One of the features is the social network graph which is to display how collaborators work on their versions of a repository. Many other features includes analytics tools and feeds. While private repositories cost money, public repositories are completely free. That explains why since Github's birth in 2008 the service has grown so fast that now it becomes the most popular collaborating tools for developers. According to Techcrunch website, on 1/16/2013 Github had 3 million developers. And on Github website on 12/23/2013, 10 million repositories existed. It now becomes a platform for many popular open source projects such as the website template, Bootstrap; the web app server tool, NodeJS; the blogging platform, Ghost; and many others.
Open source projects are great because they are free to the world. And bugs can be fixed quickly and found easily by a large group of contributors. Everyone can see the code and none can create malicious code. This put open source projects in an advantage stage over some closed project. We are using a lot of open source software; among them are web standards such as HTML and CSS, Javascript and our operating systems may come from the same open source software Unix.
More and more people are contributing to open source projects that they believe can make the world better. These projects won't have much feature impact if they do not have a strong version control system, such as Git to manage their code and a powerful Git platform, such as Github to back it up. In a recent move to hire more qualified programmers, many companies start to look at a student's contribution to open-source projects in order to examine closely his coding skill. As long as open technology is still useful and advances our science frontier forward, open-source projects such as Git and service Github play an important role in software engineering.
References
Finley, K.
(2012, 07 14). What Exactly Is GitHub Anyway? Retrieved from
TechCrunch: http://techcrunch.com/2012/07/14/what-exactly-is-github-anyway/
Git. (n.d.). About. Retrieved from Git:
http://git-scm.com/about
Rothwell, R. (2008, 08 05). Creating wealth with free
software. Retrieved from FreeSoftwareMagazine:
http://www.freesoftwaremagazine.com/articles/creating_wealth_free_software




This was a very interesting piece. I didn't know the CVS and Subversion started out as proprietary software. Also I like how you wrote in story form and slowly introduced new pieces of technology.
ReplyDeleteOne thing I would have liked to hear more about was how git is different from non-distributed VCS and what advantages come from that.
Overall this was a good technical blog post, in which you obviously did a lot of research, and it really held my attention. Can't wait for more!