Why Kiln is based on Mercurial, and not other (D)VCS

10,532

Solution 1

Here's an answer from one of the Kiln developers.

  • It provides real branching.
  • It's easy to use.
  • Windows support is very good.
  • It's fast.
  • It's powerful.
  • It's easily extensible.

Check out the full details here. They explained themselves quite thoroughly.

Solution 2

Original answer (Nov. 2009, GitHub has only 1 years, Git only 4)

I really do not know, but I would venture "better Windows support", Windows being potentially the main platform for most of their client base.
Git is still too much a "unix/linux" product, with a "hopeful" Windows support through mSysGit.
Just read the tone of some of the MSysGitHerald articles, like the ninth one:

For a very long time, msysGit was pushed forward by the gang formed of Hannes, Steffen, Sebastian Schuberth and myself [Johannes Schindelin]. At some stage I got so frustrated that I stopped working on msysGit altogether. The reason is simple: it was no more fun. Way too many people asked for fixes or enhancements, and none of them offered contributions of their own. As I am not a Windows person (being a happy Linux user since 1994), the work on mSysGit was not rewarding enough for me to continue. So I stopped.
But in the meantime, things have changed.
We got contributions by ...

That does not inspire a great deal of confidence when it comes to push forward that tool to your IT boss. I am very happy with Git for a personal usage, and very grateful from the hard work of all mSysGit contributors, but in a big company, I would have a hard time making Git the default DVCS tool adopted by our Windows developers.
Both because of the learning curve, but mainly because the support level is not there yet.
That is only a personal opinion, and if you have a different experience deploying Git successfully, more power to you.

Mercurial being the closest DVCS to Git, and based on portable Python scripts (and not linux/unix-based sh scripts), it may be a pragmatic choice.


Update 2018, seven years later: yes, the Windows support for Git is now a reality.

And Microsoft has its entire Windows codebase into one (giant) Git repository: See "The largest Git repo on the planet": 3.5M files, 300GB, 4,000 engineers producing 1,760 daily “lab builds” across 440 branches in addition to thousands of pull request validation builds.
But this is with the addition of GVFS (Git Virtual FileSystem), which allows to dynamically download only the portions you need based on what you use.
This is not yet in Git native, although its integration has begun last Dec. 2017, with the implementation of a narrow/partial cloning.

Kiln advertises Git support as well:

Kiln, our best-in-class DVCS hosting solution, supports Git as well as Mercurial! GitHub is great. FogBugz is great. What could be even better? How about integrating them! FogBugz can be notified by GitHub Web Hooks whenever an incoming changeset comment mentions a case.

Solution 3

When I looked at DVCS system I like Mercurial because.

  • The Mercurial developers seems to care about Microsoft Windows users.
  • The Mercurial developers do not thinks of Microsoft Windows users as being Unix users that are forced to use Windows.
  • Unlike a lot of open source developers, the Mercurial developers don't seem to hate Microsoft for making money.

Maybe the Kiln developers thought the same...
(All the main DVCS systems are good enough, otherwise other factors would come into play more)

This answer so now clearly out of date as Microsoft owns github and git is now in very common use on Windows.

Solution 4

I can't speak for FogCreek, but I know when I was choosing which DVCS to use many people commented that git does not work well on Windows (unless it's run in cygwin). Since FogBugz is designed to run on either Windows or a Linux systems (from what I understand--I am not a user myself) having an extra layer (cygwin) to run git may have been the determining factor there. I don't know much about Bazaar or Monotone, so I can't offer any feedback there.

Solution 5

I think the issue of hg vs. git is a red herring, as the OS support issue alone is a major difference. The real question is why hg rather than bzr, as these two are very similar and hg developers themselves consider bzr to be their real competition and vice-versa. Sun conducted an extensive evaluation of both when it came to choosing a DVCS for OpenSolaris and OpenJDK. One would like to know what was the process used for picking hg at FogCreek. All we got so far by way of answers (apart from the OS support issue) are generalities.

Share:
10,532
Anonigan
Author by

Anonigan

Updated on June 06, 2022

Comments

  • Anonigan
    Anonigan about 2 years

    What were the reason for chosing Mercurial as a basis of FogCreek Kiln, a source control management system with tightly integrated code review, and FogBugz integration?

    Why Mercurial, and not other (distributed) version control system, like Bazaar, Git or Monotone, or creating own version control system like Fossil (distributed software configuration management, including bug tracking and wiki) did?

    What were features that make FogCreek choose Mercurial as Kiln engine?

    • Juliano
      Juliano over 14 years
      You sound like if it is a huge problem for it to be based on Mercurial... What is the problem?
    • deft_code
      deft_code over 14 years
      @juliano: seeing as Jakub has a silver badge for git answers I'd guess it is because they didn't choose git.
    • Anonigan
      Anonigan over 14 years
      Well... I'd like to know if it was because of some features / characteristic specific to Mercurial (MS Windows support, being written in Python mainly, API and extensions ecosystem, smart HTTP protocol support)... and yes, if it is one of features that Git could improve upon.
    • JD Isaacks
      JD Isaacks about 12 years
      Git has a lot of traction on github, so there would be a lot of competition. Mercurial is probably the 2nd most popular.
    • VonC
      VonC about 6 years
      Note: Kiln support Git/GitHub, as I mentioned in my revises answer
    • 0xC0000022L
      0xC0000022L almost 5 years
      @JakubNarębski maybe it was because Mercurial allows to clone to a remote machine via SSH which - nearly ten years on - Git still hasn't learned, although it should be relatively trivial to implement.
    • Anonigan
      Anonigan almost 5 years
      @0xC0000022L - creating repositories on remote machine, which allows push - and which is equivalent to clone to remote machine - is possible with third party Git repositories management software, like Gitolite : via SSH and via HTTPS.
  • ThisSuitIsBlackNot
    ThisSuitIsBlackNot over 14 years
    +1 for the explanation directly from one of the devs, instead of just speculation.
  • Ian Ringrose
    Ian Ringrose over 14 years
    the same could be said about Git (apart from windows support), they are both good!
  • jk.
    jk. over 14 years
    the same can not be said about git because of windows support
  • David Johnstone
    David Johnstone over 14 years
    I love the way that this answer has way more upvotes than the full answer linked to on kiln.stackexhance.com :-)
  • caseyamcl
    caseyamcl about 14 years
    Indeed, all of these points are just as valid (except perhaps for the "windows support" part) for git. In fact, git branching seems more powerful than mercurial.
  • Devplex
    Devplex over 13 years
    @jsight I also found Mercurial easier to get into than Git, coming from a Subversion mindset.
  • Torben Gundtofte-Bruun
    Torben Gundtofte-Bruun over 12 years
    Small note to your mention of Linux: There's no Linux client for Kiln, only for Win&Mac.
  • Tim Delaney
    Tim Delaney about 11 years
    I also found Mercurial much easier to get into than Git, never having used SVN except to check out ... (mainly ClearCase, some exposure to Accurrev, Visual SourceSafe (yuk) and even RCCS back in uni ...). I'll note that TortoiseGit still is nowhere near as good as TortoiseHg.
  • Ben
    Ben over 8 years
    Fixed the link. I don't see anything about branching in there, though, did I miss something? Somebody mentioned git's branches, I think "real branching" refers to permanent long-term branches that are part of history and hard to get rid of, which git doesn't have that I know of (by design). Anyway I'd hoped to see that confirmed in the link but there doesn't seem to be any discussion of that.
  • Sz.
    Sz. over 8 years
    Ian: "the same could be said about Git (apart from windows support)" -- Ehh-heh, you've apparently missed the "It's easy to use" part. ;-p Git is the gold standard example of a tool with a user interface designed for its own developers as the target audience. It's like driving your car via CAN-bus adaptors and prototype test equipment loaned from the R&D lab. Extremely powerful, but requires you being in the car industry.
  • Sz.
    Sz. over 8 years
    I think this very feature might get me move over there from GitHub.
  • 0xC0000022L
    0xC0000022L almost 5 years
    Git support for Windows existed for quite some time. First one had to build it oneself (and better not forget to clean the 2..3 GB of object files). However, the support for Windows is still half-a^Whalf-hearted, as you will notice the first time you have to deal with a legacy repo which has refs that differ just in letter case. Once Git attempts to unpack these refs (meaning they become file and folder names) you get into trouble. And strictly speaking that's not a Windows problem either. Also, a lack of Windows support is a purely economic rationale ... Git has other issues as well.
  • 0xC0000022L
    0xC0000022L almost 5 years
    @Sz. I believe I read somewhere that exact feature was discontinued by now. See here for some pointers.
  • 0xC0000022L
    0xC0000022L almost 5 years
    Four years on, Bazaar seems to exist as a shadow of its former self. While Mercurial evolves, Bazaar development seems to have stopped, although a friendly fork exists in Breezy [and that is very much still alive].
  • 0xC0000022L
    0xC0000022L almost 5 years
    truth is you have to be able to afford being an open source developer. Either because you still live with your parents or because you live in your mom's basement as a (technically) grownup or because you earn your money some other way (including writing proprietary software) and in all these cases you still have to be able to afford the time to develop FLOSS. It can be very rewarding, but also very frustrating. I don't think the generalization that FLOSS developers hate Microsoft isn't true. I for one have developed FLOSS specifically for Windows.
  • VonC
    VonC almost 5 years
    @0xC0000022L I agree with you, in 2009. Now (ten years later), the Windows support is a more concrete reality, since Microsoft employs Johannes Schindelin (dscho), as I mention in stackoverflow.com/a/50555740/6309. Since Microsoft has bought GitHub, the economic incentive for supporting Git itself is clearer.
  • 0xC0000022L
    0xC0000022L almost 5 years
    I am very skeptical. As far as "porcelain" functionality is concerned I'd be with you. However, "plumbing" in Git is part of the public interface, which makes it exceptionally hard to fix underlying issues like with the unpacked refs I mentioned in my previous comment. It's one thing to mention how things work under the hood. But with Git one is expected to know it and occasionally be willing to get ones hands dirty there. Sure, not everyone may run into this and perhaps if only one OS is used for development, clients could warn of the (unpacked refs letter case) condition.
  • VonC
    VonC almost 5 years
    @0xC0000022L True. I see there are still updates done on packed-ref in the upcoming Git 2.23: stackoverflow.com/a/41307509/6309. And the tracing is improved (stackoverflow.com/a/56094639/6309)
  • 0xC0000022L
    0xC0000022L almost 5 years
    Ah, nice. So perhaps these issues will become non-issues in time. Thanks for the pointers.
  • VonC
    VonC almost 5 years
    @0xC0000022L Speaking of porcelain and plumbing... brace yourself: stackoverflow.com/a/57066202/6309
  • Ian Ringrose
    Ian Ringrose almost 5 years
    @0xC0000022L look at the date I wrote the answer
  • 0xC0000022L
    0xC0000022L almost 5 years
    what about it? I could have written that comment just the same (except I just noticed I have a double negation in it, which was not intended) ten years ago. Because even then I was developing FLOSS software for WIndows in my spare time, yet working for a vendor of proprietary software (for Windows, Linux, Solaris, AIX, ...).