I love working on side projects. They are great opportunities to try out new ideas, technologies and, who knows, they may become something big one day.
Up till now, I have been hosting most of my side projects on Github. It has been huge in the open source and enterprise world as de facto
git hosting service. But, lately, I came across Gitlab, which seems to bring the goodies from Github and Bitbucket all together.
As I am planning my new side project (more on this later :-)), I want to revisit my default and see if Gitlab could actually be a better fit. Omitting the details, here are a couple of things that I think are must-have for this project:
- Private repositories - the project would be a web service instead of some open source tools.
- Continuous deployment - I want to move fast, but don’t want my potential users to experience breaking changes.
- Good project management tools - I like to get things organized and I am huge on those GTD techniques.
With these in mind, I did a little bit of research on Github and Gitlab.
Not suprisingly, both Github and Gitlab, or any
git hosting services in that matter, have options for private repos. At the end of the day, it is all about how much it costs.
- Github offers a $7/month plan for personal account with unlimited private repos (Github Pricing).
- Gitlab provides unlimited private repos hosted on Gitlab.com for free (Gitlab pricing).
If you were already a paying user for Github, there is really no additional cost to add more private repos and the comparsion dosen’t really make any sense. That been said, since I am not a paying user today, this one seems to be a no-brainer to me (I agree a few bucks a month isn’t that bad, but I am just a poor guy that thinks every penny matters).
Continuous Deployment (CD) aims at building, testing, and releasing software faster and more frequently. It is almost the standard for developing web applications nowadays.
On this front, Github doesn’t provide any support for CD directly, but there are a lot of third party integrations available, e.g. Travis-ci, Snap-ci or Jenkins. These thrid party tools ranges from open source and free to a fixed subscription fee per month.
Gitlab offers a built-in CD support, known as Gitlab-ci, for free with a partenership with DigitalOcean. The CD process integrates nicely with Gitlab’s UI and host everything in one place.
There are definitly more designated and mature CD support out there for Github, given its longer history, more popularity among the open source community and lack of its own implementation. But the big plus for Gitlab to me is that it integrates CD within the platform so that I can have one less extra things to worry about.
Project Management Tools
As a projects grows, there will be more things flowing around and people lose track of them. Thus, I value good project management tools to be important factors to the success of any projects.
Both Github and Gitlab provides good code review, wiki page and issue tracking tools that are crucial to day-to-day development, but Gitlab supports more features such as associate attachment with issues (very helpful to frontend debugging) and a work-in-progress (/wip) status to avoid accidentally merging unfinished code.
As you might have already guessed, I am leaning towards using Gitlab for my next side project at this point. It seems to provide more useful features out of the box with less cost. Moreover, isn’t it the spirit of side projects to try out new and shiny things?