It should provide a Bitbucket or Github like experience, including a project wiki, repository browsing and management, and social coding aspects such as code review.

The solution should have mercurial support (if not support for other DVCSs).

Of these, only SCM-Manager and RhodeCode come close as they can be installed on your own servers and are open source. However they do not have the Bitbucket or Github experience. There is no issue tracker or wiki and the UI, while functional, is not up to par with Github or Bitbucket.

I can get close with Trac or Redmine with their repository browsers but unfortunately they do not have any repository management capabilities.

Are there other open source tools out there that would provide a similar experience to Bitbucket, Github or Kiln?

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
If this question can be reworded to fit the rules in the help center, please edit the question.

7 Answers
7

I would take a look at Fossil. It is the system the developers of sqlite use, internally, apparently. It also uses sqlite, which is a good solid technology... that is nice and portable - as well as simple and reliable.

It has a good, if austere user-interface (which i think behooves the nature of a productivity-oriented goal such as you describe). ((Be sure to check out the "grey" theme. It is way less "router-admin" than the default "theme", if you could call it that.)) I was drawn to it because of its roots as a CGI based system, cause I'm a sucker for CGI. The results of that heritage are actually very interesting, as this system has a very unique, JSON-ONLY mode which has all sorts of interesting implementation-possibilities..

They mention it - but it's worth repeating that it has 0 dependencies. No php, no mySQL, no python. Nada. It's its own binary executable - and it works on many platforms. I wish more projects "thought" the same way.

I am not affiliated with them, so will simply quote their opening page extolations, which generally, I agree with.. also take a look at questions & criticisms..

Bug Tracking And Wiki - In addition to doing distributed version control like Git and Mercurial, Fossil also supports distributed bug tracking, distributed wiki, and a distributed blog mechanism all in a single integrated package.

Web Interface - Fossil has a built-in and easy-to-use web interface that simplifies project tracking and promotes situational awareness. Simply type "fossil ui" from within any check-out and Fossil automatically opens your web browser in a page that gives detailed graphical history and status information on that project.

Self-Contained - Fossil is a single stand-alone executable that contains everything needed to do configuration management. Installation is trivial: simply download a precompiled binary for Linux, Mac, or Windows and put it on your $PATH. Easy-to-compile source code is available for users on other platforms. Fossil sources are also mostly self-contained, requiring only the "zlib" library and the standard C library to build.

Simple Networking - Fossil uses plain old HTTP (with proxy support) for all network communications, meaning that it works fine from behind restrictive firewalls. The protocol is bandwidth efficient to the point that Fossil can be used comfortably over a dial-up internet connection.

CGI Enabled - No server is required to use fossil. But a server does make collaboration easier. Fossil supports three different yet simple server configurations. The most popular is a 2-line CGI script. This is the approach used by the self-hosting fossil repositories.

Robust & Reliable - Fossil stores content using an enduring file format in an SQLite database so that transactions are atomic even if interrupted by a power loss or system crash. Furthermore, automatic self-checks verify that all aspects of the repository are consistent prior to each commit. In over three years of operation, no work has ever been lost after having been committed to a Fossil repository.

Update: Instead of alluding to the interface, here's a quick shot of it… As you can see, it's definitely simple.. But that also means a clean slate for customization.. Just a single stylesheet and a header/footer/body-type templating system. Better to write a short story than rewrite someone else's book, IMO.

+1 for fossil. I've used it extensively here at work, and the only "downside" I've seen is that zone which tortoise(git/hg/svn) fits into. However, there is the winfossil project. It's hosted in fossil, if you want a look at the web interface on a project besides fossil itself.
–
Spencer RathbunJan 17 '12 at 14:38

1

Fossil is absolutely awesome. It's rarely what I use, but it's the truth.
–
haylemJun 13 '12 at 17:14

Gitorious is open source and you can install it on your own server using scripts provided by the Gitorious community edition (see http://www.getgitorious.com/installer). Gitorious now has support for wikis and issue tracking. There is also a Docker image available for quickly getting it running.

Another option would be Gitlab which is basically a GitHub clone, not as mature as gitorious but it's under heavy development with monthly releases.

Your constraints are pretty specific, but I think you can get the results you seek with ChiliProject + plugins.

ChiliProject is a fork of Redmine that uses updated versions of Ruby/Rails. It supports git and mercurial very well, and replicates the Github Issues functionality it looks like you're seeking by parsing commit messages (i.e., refs 291 in a commit would link a commit to issue #291).

There are also Redmine/ChiliProject plugins that provide facilities like code review, syntax highlighting, and other niceties that Github, etc. provide that might not be obviously or readily available in open-source competitors.

There are other options, JIRA, etc., but they (IMHO) don't provide the felxibility or wealth of functionality that the ChiliProject fork of Redmine + the multitude of available plugins provide. There's not much that Github and/or BitBucket do for you that ChiliProject (possibly with freely available plugins) can't do; and the beauty is, if it doesn't already exist, it's usually fairly trivial to implement it yourself.

If this sounds like more than you need... I haven't tried it yet, but GitLab also looks interesting... it doesn't seem to have the extensibility or plugin architecture of Redmine/Chili, but if you're looking for an open-source clone of Github with most of the core feature set (and you don't need to support multiple DVCSs), it looks pretty good.

In addition, if you need web-based source control management tools... I've successfully used Gitosis with Redmine/ChiliProject... not sure of the equivalent for Mercurial, but it should be fairly trivial to add in.
–
Jason LewisJan 14 '12 at 10:21

Allura http://sf.net/p/allura should fit the bill. It is the platform for all the new (or upgraded) projects at SourceForge and is open source. It supports Mercurial and wikis, plus many more tools (Git, SVN, ticket tracker, forums, etc). It doesn't quite have "code review" but does support forking and merge requests for Mercurial and Git repos.

Jenkins for continuous integration and deployment (we have jobs for deployment and upgrade tasks that can be assigned permissions in a granular fashion, and you get the audit trail for free)

Active Directory for authentication (all of the above can integrate with it seamlessly)

The DVCS integration in Redmine has improved by leaps and bounds in the later releases, I upgraded a few weeks ago and I am extremely pleased that most of the "gotchas" are gone.

I run the Redmine and RhodeCode servers on the same host because Redmine doesn't support remote HG repos just yet. Jenkins runs on several other hosts.

I use a RhodeCode hook to trigger mercurial pulls in Redmine. I can't use a hook for Jenkins pulls because of JENKINS-13717, but I submitted a patch for this already and I guess it will be accepted pretty fast. In the meantime I just poll the HG repos every few minutes.

Everything runs on Debian 6.0 over Nginx reverse proxying to get SSL termination (all of this is only used over SSL). Recently the whole package was moved onto a ProxMox cluster to virtualize it all with great results so far. In case you don't know the product, you should take a look at it. It's one of those "I can't believe this exists and I didn't know about it and OMG it's open source too!" kind of product. We run these services on OpenVZ containers that are easily migrated from one host to another for hardware repairs/upgrades. On the same cluster we also run a a bunch of KVM virtual machines as well for automated testing on Windows platforms.

I am extremely happy with this ecosystem. It has improved our dev/QA team's ability to reproduce issues and track changes by a huge margin. Just a few warnings:

If you go with Rhodecode, don't set it up on SQLite. Use MySQL or another real DBMS. It's not really migrateable after the fact, and SQLite only takes 1 connection at a time, resulting in funny locks and timeouts (see RhodeCode's #439). This becomes painful if Jenkins is polling the repo continously as you get error messages once in a while (see comment above on Jenkins issue).

You really can't stress enough to your devs that in Mercurial, commit number "132" means nothing to everyone else on the network as those numbers are only local. When talking about changesets inside Redmine tickets, either use the local revision number that you can get from the repo browser (which is the same in both RhodeCode and Redmine, since they run on the same machine) or use commit:abcd1234.

I have no hesitations on recommending this setup as I am extremely happy with it. If you need help configuring a specific service or you want to get a look at my config files feel free to ask.

It works on a project based approach which allows you to create a project and assign multiple repositories to it (at most one SVN repository). The auth is based on individual plugins (we integrated it into our ldap).

We use it for our https://code.vis.ethz.ch coding platform. At the moment there isn't any support for code review but it could easily be added as a plugin.

Cydra project looks like it barely got started a few months ago and doesn't appear to be very actively developed. May be a bit immature to mention.
–
R0MANARMYAug 6 '12 at 4:52

Yes, you are right. But then if you want to setup something like a code hosting platform you might want to customize a lot of stuff yourself.So I thought it was worth mentioning.
–
PascalAug 19 '12 at 12:24

It also has a good issue tracker or you can link to an external issue tracker. You can test your merge requests with GitLab CI if you want to. GitLab has been growing fast and is in use by more than 25.000 organizations.