Gitorious has undergone quite a few changes recently. Apart from the implementation work we’ve done (more on that later), the biggest change is that Gitorious is now an official Shortcut project. Since 2007, Gitorious has been maintained by yours truly, Johan Sørensen, mostly in my spare time.
Gitorious now is a project maintained by Shortcut AS, which I co-founded. Shortcut AS now officially supports and develops Gitorious in cooperation with contributors outside Shortcut. Gitorious is, and will continue to be, 100% free software, licensed under the Affero GPL.
There will be more big announcements around this next week, but it’s important to note that Shortcut now provides professional level Gitorious hosting to companies hosting their FOSS projects. This gives Gitorious a bright future and lets us put more work into making Gitorious better for all our users.
Gitorious is still free in both meanings of the term, and you can continue using Gitorious the way you’re used to.
Below is a list of some of the bigger improvement we’ve done. We’ll be able to talk more about one side of the future of Gitorious next week, which is cause of these changes.
New SSH key fingerprints!
First, please note that we had to change our public SSH key fingerprint. it is now
7e:af:8d:ec:f0:39:5e:ba:52:16:ce:19:fa:d4:b8:7d and the IP of the frontend server is
22.214.171.124. Now on to the fun stuff!
Asynchronous task system
Long-running processes have been handled asynchronously in Gitorious for quite some time. For instance, when you create a new repository on the site, the repository isn’t created directly; rather an entry in the Gitorious database is created, which is later on picked up by the task performer script (run by cron). Further on, when you push changes to a repository on Gitorious, the post-receive hook in the repository would launch the Rails environment and create events in the database. This could make it painfully slow to push a large set of commits to a repository, as your Git client would have to wait while Gitorious populates the database.
The latest version of Gitorious uses an asyncronous queue for such operations, which means that the action you're performing will send a message to the queue and then immediately return, instead of waiting for the operation to complete or insert a row in the database. Gitorious uses the ActiveMessaging plugin, which puts a message on the queue in the following situations:
- when a new repository is created or cloned
- when a repository is deleted
- when a new SSH key is uploaded
- when a new system message is sent (see below), to send email notifications
- to generate a compressed archive
- when a client pushes changes to a repository
We use Apache’s ActiveMQ and the Stomp protocol for queuing, but ActiveMessaging gives you some other options as well. Gitorious includes a poller script that consumes messages and performs the actions required. This script can keep running and will process all messages that are on the queue; in our experience this speeds up the day-to-day usage of Gitorious drastically.
Gitorious now supports the creation of teams. Anyone can create a team, which lets users share repositories, promote their team on the team page and gives custom URLs for projects and their repositories.
The teams feature gives you way of easily dealing with commit rights across different projects. This way, open source teams can maintain a list of members with commit rights to all the team’s repositories; giving better collaboration opportunities across projects.
Several repositories per project!
Each project can now have several repositories. The project page lists all repositories belonging to the project, so you can easily see repositories that relate to each other.
This is quite useful, for instance a lot of projects consist of different kind of modules (or whatever you prefer to call them) that fits nicely into separate git repositories. Now you don’t have to create a new project for each module, just stick them in the same project! And together with the new teams features the repositories can now be managed individually.
The URLs generated and recognized by Gitorious has been completely revamped, providing URLs that let you easily recognize what you're currently looking at:
Project URLs: Any Gitorious project now gets a top level URL. For instance, the Gitorious project’s new URL now is gitorious.org/gitorious. The repositories beloning to a project has URLs under the project’s URL; for instance the mainline repository of the Gitorious project now resides at gitorious.org/gitorious/mainline. Further on, the trees under each repositories are at gitorious.org/gitorious/mainline/trees/master, and individual blobs are at gitorious.org/gitorious/mainline/blobs/master/app/models/comment.rb
Team URLs: If you create a team on Gitorious.org, your team will get a URL in the format gitorious.org/+gitorious-hackers. Any projects and repositories belonging to a team will be namespaced within the team, for instance the gitorious team’s addons project would reside at gitorious.org/+gitorious-hackers/addons.
User URLs: We love UNIX. On a UNIX system, each user’s home directory is referenced as ~username. We've taken this feature into Gitorious, giving each user his own namespace on Gitorious. My Gitorious URL is now gitorious.org/~johan. Personal repositories on Gitorious are namespaced under the user’s login, for instance gitorious.org/~johan/fish-nuggets/johans-clone would be my clone of the fish-nuggets project.
These new URLs are also used in Git URLs, so to clone my it, you would simply
git clone git://gitorious.org/~johan/fish-nuggets/johans-clone.git
And I'd be pushing to:
We think these urls make a lot more sense than what we had.
Merge requests lets users make contributions to repositories hosted on Gitorious.org. After all, sharing code is what it’s all about. The new version of Gitorious brings some changes to the way merge requests are handled:
- The merge requests now can have comments regarding the code included in the merge request. This is a first step towards better facilitating the code review process around contributions made to a project/repository. In addition to this, users can comment on individual commits included in the merge request.
- When a user creates a merge request, he can now specify which commits should be included in the request. This is done by specifying the last commit to be included in the merge request. The instructions to the person performing the actual merge specifies the commands to use to merge the affected commits into his repository.
- When the owner of a repository receiving a merge request either approves or rejects the request, he can enter a reason for his decision. The user who requested the merge will receive a notification that includes this reason.
Gitorious now has a new logo and the overall visual appearance has gone through a bit of a revamp. This should both be more appealing to our users and provide a simpler and more consistent user experience, but we'll admit we still has some work to do when it comes to the UI so expect further improvements here.
You will now find breadcrumbs on most pages, indicating the context of the current page and providing links for easier navigation and backtracking.
Support for several committers
You can now add one or more committers to a repository, the difference being that you can now add a whole team as well and projects and repositories themselves can be now owned by a team. This gives you a way of easily managing multiple project or repository administrators.
Support for several email addresses for a user
Some users use several email addresses when committing code, and Gitorious now lets you specify several email addresses (“aliases”). When adding a new email address you're required to confirm the address by clicking a link you'll receive by email from Gitorious. Check your profile page for the “Manage aliases” link.
User and team avatars
Users and teams can now upload custom images (avatars). So if you don’t have a Gravatar account (or don’t want one) you can upload a custom image that will be displayed on your profile and next to your commits on the site.
Since FOSS development is all about communication, Gitorious now has an internal messaging system. Each user will have an inbox containing discussions with other users and notifications of events related to their projects and repositories. This gives you a single entry point into communicating with other Gitorious users.
Each user can specify whether he wants to be notified of new messages by email. If you enable this (it will be disabled by default), you will receive a copy of each message by email, so you're notified even if you don’t log into Gitorious for a couple of days.
Where Gitorious previosly would send you email messages on some occasions, most of these will now be sent as messages instead and it’s up to you whether you still want these on email or not.
The messaging system is pretty barebones so far, we have some ideas for closer integration with the traditional communication means we usually do on these kind of projects, so we'd discuss more about that.
Terms of service
Now for some slightly boring details, since Gitorious.org is now an official product of Shortcut AS, we need you to accept our terms of service. Hopefully you'll find them reasonable (if not, do get in touch!).
We're also licensing these documents under a creative commons license, so you can save some cash should you need something similar. We've spent some good money on getting them adapted to our needs, there’s no need for you to do the same!
When you push a set of changes to Gitorious, Gitorious will create a single event representing the push. Clicking this event will display each commit included in the push. This should make it easier to get an overview of what’s new, but still provide a way to dig into changes.
And of course, thanks to the asynchronous task system, the actual
git push will be close instant. No more waiting on Gitorious to sync, hooray!
Improved front page
The new Gitorious front page now gives a summary of:
- recent activities throughout the site
- the most active projecs
- active projects the last two weeks
- the most active repository clones
- active users
- active teams
- latest projects
This should provide a good start for peeking into the activities on gitorious.org. We still have some data we're not exposing (such as git:// clone count) that we can use to provide further interesting things and most importantly; more exposure for your project
New server infrastructure
Gitorious now lives on a new server farm, with vastly improved performance and stability. The new server farm is running on brand new hardware with some really nice specs as well as redundant SAN storage for your repositories.
Integrated dashboard and profile
Really, there was no reason for previously having your dashboard and user profile page be different. They're now the same page, with your account specific functions shown if you're logged in.
Hopefully you'll enjoy this much-improved release of Gitorious. We have some more exciting news lined up for next week and of course, plenty of new features to discuss with you so don’t be afraid to get in touch either by email, comments or the discussion group!