Saturday, July 9, 2011

Github

For long time I am preparing to start working on some personal project/start-up - as what we all strive to eventually ... at least us in Internet based businesses.

One of the first step is to start with some infrastructure as well. I already setup some server on Amazon Cloud, but really needed full solution for Software Configuration Management with some other support features.

I was looking at following goals:
  1. Source code repository I can easily share with other people. Other considerations where my own SVN repository, Bitbucket or something else.
  2. Wiki where I can keep all code/project related information such as what needs to be done and so on. Alternative is to run some out-of-box wiki (Confluence, Mediawiki) or some other tools that has embedded wiki such as RedMine or Track.
  3. I needed some way to keep an eye on code itself and being able to perform code reviews. Alternative could be Crucible.
  4. It needed to be simple and top work well in distributed environment with people all around the globe included since this is how this might end up. So I opted more for already hosted option them me hosting it.
  5. Of course source repository clients needs to run on Windows, Linux and Mac. 
  6. I needed Issue tracking system. There are many out there. RedMine or Track have integrated ones, there is of course Jira and Bugzilla.
  7. Source code repository and code review tools need to work nice with different technologies such as Java, PHP, Ruby, C++, Objective C ...
  8. Support for simple build and deploy
  9. Minimize all the effort regarding maintenance of any kind - ideally no effort.
  10. Enable developers to work in full isolation while working on same modules - so minimal dependencies on other people's work.
  11. No complex branching, but keep support for different stages of same code and simultaneous work on same modules
  12. Think about social component of development process and maybe make it a bit more fun if possible
After some discussions with some new colleagues/friends I have decided to give it a try to Github. It is a GIT based code repository running in cloud with many other extra features on top of it. I opted for GIT vs SVN since I think I need more focus on distributed and simple. Other features simply were there so instaed of me thinking what to do and integrating many different systems, I opted for this. Main competitor was Atlassian with its own cloud and set of tools. Main drawback was that I actually did not like source code repository which it offered and tools are perfect but simply maybe a bit of too much complexity and overhead for what I need - I mean no need for Jira or Confluence realistically, i just need the simplest tool available to get the job done.

Github simply answers all my requirements and is cheap. I took cheapest plan called Micro for 7 USD per month (1 private user, 5 repos) I will give it a try, will make 3, 4 modules ... will start with some Grails module and then move to maybe Wicket, do some iOS and Android stuff and will see how it works. Will perform deploys to my Amazon server via Capiostrano. If I involve some other people will have to upgrade account to Small for 12 USD per month. Well, if I need developers I will have extra 5 USD per month I guess to invest.

Thanks to Nicola Paolucci with whom I discussed about this and who pushed me toward this decision.

No comments:

Post a Comment