First, there's Community Edition - a free and open source self-hosted version with packages for Debian, Ubuntu and CentOS machines. It's licensed under MIT with code available here.
Then there's Enterprise Edition - a self-hosted solution that adds proprietary features on top of Community Edition that improve integrations with other tools, server management options, workflow management and authentication and authorization integration and starts at $19.90/user/year.
Self-hosted solution are great for keeping data private.
For more information about GitLab's self-hosted features: Link
Finally, there's a hosted solution that offers both public and private repositories for free.
The Lightweight Directory Access Protocol is an application protocol for accessing and maintaining distributed directory information services over an Internet Protocol (IP) network.
GitLab EE adds additional functionality over CE such as support for multiple LDAP servers and group sync.
Snippets are similar to (well-known) GitHub "gists". They are a way to share code or have conversations about anything without needing a full git repo. The implementation here reminds more of a sort of pastebin.
GitLab's UI is clean and intuitive. Each view is designed to not fill the screen with useless information.
It displays the activity in a feed-type way in the most prominent part of the view. On top of that, there's a toolbar with buttons which can filter this feed by pushes, merge events or comments.
On the left, there's a menu that displays all the links that take you to the different views. For example, a file directory which displays all the files in that repo, a commit view which displays all the commits in cronological order, a network and a graph view that display important information graphically etc...
All these details make GitLab's UI extremely intuitive and easy to use, no view is overflown with information and every view displays only the most useful and crucial information needed at that time.
Users can find an unlimited number of private repositories in GitLab. This service is completely free. Nevertheless, there is a notification that users will have to pay for storing files that exceed 10 Gb in their size.
GitHub has integrated issue tracking that makes hunting and solving bugs easy. Each project's issues page can be filtered by closed issues, assignees, labels and milestones. Issues are also sortable by age, number of comments and update time.
GitHub's UI is clean and intuitive. Each view is designed to not fill the screen with useless information.
For example, the repository view displays only the most crucial data about that repo - on the top it displays the number of commits, branches, releases and contributors. When clicked, each of them will take the user to a page that displays more detailed information.
GitHub is the largest host in the world for open source projects. Developers from all over the world fork and work on countless projects hosted on it.
GitHub's search box is a powerful tool that allows developers to find open source projects in areas they are interested in and where they can immediately start to contribute.
GitHub also has a page dedicated solely at exploring and finding open source projects, grouping them by each topic they cover. In the same view, GitHub displays trending repositories and sorting them by day, week or month.
GitHub is the largest code host on the planet with over 21.4 million hosted repositories and many users. It's unarguably the largest VCS used by developers worldwide and as such, it has a vibrant community that follows it resulting in many guides and tutorials for new users. Even experienced developers can always find an answer to any question they may have.
Gists is GitHub's way to easily share code, text snippets or any kind of information with the world. They are an easy way to share text and they work as Git repos, which means that they are forkable and versioned. They are also fully compatible with Git.
GitHub has easy and useful features to control teams, large and small alike. Team members can be given different powers on different projects, ranging from the ability to create them, to only being able to have read-only access.
GitHub supports searching code. Whether it's from a specific project or from the whole website. What's more, GitHub has excellent SEO and you can easily find any line of code hosted on public repos on GitHub even from Google.
GitHub has added another layer of security to their user accounts. This layer comes in the form of Two-Factor authentication. After it's enabled, GitHub delivers an authentication code by SMS, or by a free application for smartphones. After two-factor authentication is enabled, the authentication code is sent to the account owner's phone any time someone attempts to sign into their GitHub account. This means that only someone who has both the password and authentication code can sign into the account.
Many widely used cloud hosting services are easily integrated with GitHub. Any project hosted on GitHub can be set up on these services in seconds. Some companies that offer this feature are:
Amazon Web Services
Bitbucket offers unlimited private repositories for free, as long as the number of members in a team is not larger than 5. In other words, it does not charge for each number of private repository, instead it charges by the number of team members.
JIRA, the widely used project and issue tracker is developed by Atlassian, the same team that's behind BitBucket.
When the two are integrated, JIRA automatically updates issues when a new commit is made in the BitBucket repo.
BitBucket has a feature which allows users to import an existing repository that has been hosted elsewhere.
The process is very simple, either a service is selected from a dropdown menu and then a repo can be chosen and the URL for a repository can be added in the specified field. Once that's done, the repository is now uploade into BitBucket and can be edited, forked and compared to other repos hosted there.
Atlassian, the company behind BitBucket is also behind SourceTree, a free application for Windows and Mac wich works as a client for both Git and Mercurial and can be connected to BitBucket and/or other code hosting services.
BitBucket is developed and maintained by Atlassian, which is not an unknown venture, especially for developers. Atlassian has a great number of other products used by million of users worldwide, including JIRA, HipChat, Confluence and Stash.
Atlassian offers student licenses for both students and educators for Atlassian products that will be used in a classroom setting for education. This includes BitBucket, which means that students and teachers can have unlimited private repositories with and unlimited number of contributors.
Users have experienced several half a day downtimes, almost every month. True, github is down once in a while, but when GitHub is down complaints breaks loose on Twitter, TechCrunch, and other major media outlets. For the past 5 years github has been down only three times, and two of these times they were attacked by major adversaries.
There is currently no way to search for source code inside BitBucket repositories through their website. The only way to search is by downloading the repository and searching through it locally or using external applications.
User management is centralized around administrators which can give granular permissions to individual users or user groups. These permissions can be related to allowing contributions, editing, or simply giving read-only access to users. The advanced options are IP restriction, time-limited access tokens, or restricted accounts with explicit permissions.
GitGo is designed with simplicity and usability in mind.
The main view works as a dashboard of sorts for all the repository activity sorted by newest to oldest. On the top, several tabs allow users to navigate to the commits view, the tasks view or the file browser view. The navigation panel on the left has a button to display notifications, users or to display the general activity view.
GitGo manages to display all useful links at all times on the view without feeling overwhelming to the user's eyes.
This means you get a wiki and a bug tracker that you can work with locally offline and both are version-controlled. You are also able to customize, e.g., the look of your project's repository if you want to.
Unlike some other popular repositories, there is no way to edit inline directly from the source browser. Although, you can use the Cloud Console (web based terminal and web based editor) to check out your code; edit it using your favorite command line editor (or the web based editor); then save and commit your changes.
The design is minimalistic and based on today's standarts on material design. It uses colors which are pleasing to the eye and displays the information in an ordered way. The main view shows the latest activity sorted in a chronological order, displaying commits and pushes.
Every repo has it's own view, on the top there's the repo's name and a dropdown which displays the current branch with the ability to change to another branch or to create a new one.
On the right there's a vertical menu with links to add a new file, show the history or to download the current repository.
In services such as Gitlab and GitHub repositories are not grouped by default. When doing other than open source software development, however, Deveo generally has at least backend and front-end in separate repositories that both connect to the same project. In Deveo, repositories always belong to a project and share the same Wiki and Issue tracking space, which makes it easier to find the project specific information.
Deveo supports using multiple authentication scenarios. You may use Deveo local user database for simple usage. You can authenticate Deveo against your organization's centralized user directory (LDAP, AD) and you can even integrate it with an SAML2 based single sign-on service.
In addition to Git, Subversion and Mercurial repositories, you can host WebDAV based binary repositories in Deveo. WebDAV is a technology that allows you to set up private dropbox type repositories where you can simply drag-and-drop files through OSX finder for example. It's a convenient way to store binary packages, project documentation, specifications and more.
Deveo can be set up in three different modes: combo, where you have everything on one server, high-availability, where you have separated database server, and cluster, where you have multiple web nodes serving the load. The cluster setup has been field-tested with thousands of concurrent users.
Issue tracking in Deveo is better compared to GitHub, Bitbucket or Gitlab. In Deveo you can define arbitrary states for issues, meaning you can model your team's workflow as it is in real life. In addition to arbitrary states for issues, you have free control over priorities and labels that enhance the experience.
Deveo has a project based built-in markdown based Wiki, that allows you to host your project documentation in one place. The whole wiki history is saved to a Git repository, which you can checkout and edit locally if you need. Deveo offers a unique split view for editing the wiki pages, that updates the preview automatically while you write. No longer do you need to guess whether the markdown syntax is right or wrong.
The Launchpad UI is very outdated and it's not very user friendly. Browsing code is a hassle because everything is a few levels deep.
Unlike other code hosting services, which have an intuitive UI and users can go virtually anywhere from the main view, Launchpad's main view of a repository is a mess. There is a lot of information crammed into and it gets confusing real quick.
Instead of just displaying on the main view the explanation of what a repository is for and links to navigate to other parts of the repo, it also shows almost every information about that repo. This is all crammed into a single view which makes it very disorienting, especially for someone who is not used to Launchpad.
If you use launchpad, it gives you a build system (on their platform) as well as easier deployment - user merely adds your PPA to their sources.list file. Deployment (on Ubuntu, at least - other debians as well) doesn't get simpler than this.
Launchpad makes it easy to translate free open source projects into virtually any language in the world. Users are allowed to start working on translating any project they want just by having a Launchpad account and a web browser. Most of the time they don't have to even join a team to start working and the editor is web based, so there is no need for any special software.
Launchpad is built to be used for open source projects, as such it needs a powerful bug trackers to allow developers who want to contribute to jump right in. Launchpad displays bug statistics (total number of bugs, number of bugs fixed etc...) as well. Bugs can be searched and displayed from every project hosted on Launchpad or for single projects.