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

6

42

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?

Us answered 9/11, 2009 at 23:5 Comment(7)
You sound like if it is a huge problem for it to be based on Mercurial... What is the problem?Spleenwort
@juliano: seeing as Jakub has a silver badge for git answers I'd guess it is because they didn't choose git.Heartthrob
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.Newlin
Git has a lot of traction on github, so there would be a lot of competition. Mercurial is probably the 2nd most popular.Mcphail
Note: Kiln support Git/GitHub, as I mentioned in my revises answerGelid
@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.Rebarebah
@Rebarebah - 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.Newlin
H
76

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.

Heartthrob answered 10/11, 2009 at 0:23 Comment(9)
+1 for the explanation directly from one of the devs, instead of just speculation.Dripstone
the same could be said about Git (apart from windows support), they are both good!Botanical
the same can not be said about git because of windows supportCooking
I love the way that this answer has way more upvotes than the full answer linked to on kiln.stackexhance.com :-)Bandog
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.Radon
@Radon I also found Mercurial easier to get into than Git, coming from a Subversion mindset.Glory
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.Swanee
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.Approximal
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.Mccusker
G
26

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.

Gelid answered 9/11, 2009 at 23:33 Comment(6)
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.Rebarebah
@Rebarebah 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 https://mcmap.net/q/12419/-what-exactly-does-git-39-s-quot-rebase-preserve-merges-quot-do-and-why. Since Microsoft has bought GitHub, the economic incentive for supporting Git itself is clearer.Gelid
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.Rebarebah
@Rebarebah True. I see there are still updates done on packed-ref in the upcoming Git 2.23: https://mcmap.net/q/12422/-git-fetch-a-branch-once-with-a-normal-name-and-once-with-capital-letter. And the tracing is improved (https://mcmap.net/q/12423/-measure-count-objects-in-git-to-see-whether-i-am-close-to-auto-packing)Gelid
Ah, nice. So perhaps these issues will become non-issues in time. Thanks for the pointers.Rebarebah
@Rebarebah Speaking of porcelain and plumbing... brace yourself: https://mcmap.net/q/12203/-39-git-checkout-39-docs-claim-working-tree-will-change-why-are-edits-not-discardedGelid
B
10

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.

Botanical answered 19/3, 2010 at 11:11 Comment(3)
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.Rebarebah
@Rebarebah look at the date I wrote the answerBotanical
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, ...).Rebarebah
R
7

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.

Reserved answered 9/11, 2009 at 23:20 Comment(1)
Small note to your mention of Linux: There's no Linux client for Kiln, only for Win&Mac.Tisiphone
G
6

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.

Glycoprotein answered 26/3, 2010 at 1:16 Comment(1)
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].Rebarebah
T
4

So now they add also git:

One of the biggest new features is Kiln Harmony, which lets you operate on Kiln repositories using either Git or Mercurial. So you can push changes to a Kiln repo using Git and then pull them using Mercurial. This means that you never have to decide whether you want to use Git or Mercurial.

Taskwork answered 12/4, 2013 at 16:50 Comment(2)
I think this very feature might get me move over there from GitHub.Mccusker
@Mccusker I believe I read somewhere that exact feature was discontinued by now. See here for some pointers.Rebarebah

© 2022 - 2024 — McMap. All rights reserved.