Programming has changed a lot thought last years, for sure. Solving a problem is no longer now, like sitting with a bunch of books or opened MSDN help and Visual Studio, trying a different approaches. It has began with specialized forums where developers shared the problems they met and expecting other developers to help them out. It worked. Maybe because of developers like to help someone by means of computer stuff, even if they could not talk to the person sitting next table. After, developers started to create personal blogs where written a problems and solutions they met every day. Google search helped a lot to get information from blogs.. and to make this information be helpful. So now, a term “solving a problem” turns to “googling a problem” and it is very likely that someone with blog, or someone in forum or group has already solved something similar. I hardly could image development now without google.. really.
Web 2.0 bring a new type of communication and collaboration people in internet - social networks. Social networks might be a kind of evolution from forums and groups, but participants of social network has more personality in it (with a rich profile, photos and bio, ratings and so on) and a community around yourself (friends, colleagues, groups etc). If you friend of someone, you are tracking someone’s activities.. as current status, shared links, new audio or video clips and so on. Social network is so popular now, so I can bet that there no person who uses internet more than several month, who do not have an account in any social network.
Have you ever hear a term “social coding”? If you try to google it you definitely be pointed to http://github.com. GitHub is a social network, for developers. What developers need from social network? They need the same profiles as in common social network, with information, link to blogs etc, but developer is someone who supposed to produce a code and GitHub makes it possible to submit your code, so other people could see it and comment. GitHub is based on Git source control system. It has a lot of differences with more widely used Subversion and I would say Git is more complex and mature than Subversion. You have to spent some effort to switch your mind from Subversion to Git, but it not really hard to do.
Within your account you are creating a Repositories. You can have as many open repositories as you like, and you can submit any code you want. Repositories are main artifacts of network. In a Repository it is not only the source files you can store, but also it provides you with issue tracking system, binary storage for builds, wiki pages. That mean that GitHub could be also treated like a open source project management/development site like a Code from Google or Codeplex from Microsoft or old good Sourceforge.
Like any other networks it gives you ability to follow and be followed by other participants. Following means you are start to track all persons actions in GitHub, like creation of new repositories, commits, forks, code commentaries. You can also watch some particular Repository of someone, so you will track all changes that happens in repository. If you find something interesting and want to participate you can do a fork of repository (analog of branch in svn) commit to you fork and do a pull request to author, so he can review what you did and merge changed to master branch. Of all that is done nicely in GitHub, with a intuitive dashboard and tools.
GitHub is implemented in Ruby on Rails in very popular in Ruby community. It currently hosts Rails, and lot of other Ruby project. Also, you will find Linux-2.6 kernel sources of git itself.. and jQuery and many many more.
GitHub really bring something new into open source development world.
If you liked idea’s of GitHub, please create your account and let’s join.
See you on network!