Howdy, I'm Anton and I run HgLab

Hello, fellow bootstrappers!

My name is Anton and I’m bootstrapping a product called HgLab, which is a self-hosted behind-the-firewall Mercurial server and source control management system. Think GitHub Enterprise, but for Mercurial. Or BitBucket on your servers.

I started building HgLab almost three years ago. What took me so long was my vision of a product which will be trivial to install and maintain, which meant minimizing dependencies. To achieve that, I had to effectively rewrite core Mercurial in C#, and do all kinds of fancy stuff with WiX, MSI, database migrations, in-place upgrades and a lot of other things.

I turned the “for pay” switch about a year ago and so far I’m at around $2K a month. Mind you, this is not a SaaS product, so no true recurring monthly revenue here - the only recurring part is a non-obligatory yearly license renewals.

I’m targeting Mercurial users shops because Mercurial is more popular in Microsoft shops (which I’m also targeting by being Windows-only for the moment), and these guys are more accustomed to paying for software. Plus, there are really few good self-hosted Mercurial servers out there, whereas Git has quite a lot.

Now that my product is reasonably mature and quite stable, I’m trying to do some basic marketing stuff, which I find myself hopless at. One of my blog posts got to #1 on HN, which brought me about 18K visitors and no conversions whatsoever. I’m trying Google Ads and some basic promotion, but without great success.

So, this is my story.


You turned on the for pay switch a year ago – was it up and free before then or just wasn’t released?

How do you handle licensing? Licensing on customers-server has always seemed like a no-win situation to me. I’ve avoided that business model as a result. Interested to see if you came up with a solution that can change my mind there.

Are you worried that HG might fade into obscurity and git might “win”? I doubt it’d ever completely go away, but I can see a potential future where there aren’t enough HG users left to support a full business.

Congrats on your success!

Yeah, as you know, HN skews more toward startups and open source than enterprise and MS stuff.

Find out where those guys hang out (I know: easy for me to say.)

MS or Mercurial-related forums? Publish content directly related to your product area, or toward other interests of your target customers? “How-to,” “Easy/Better ways to,” “Your VCS/SCM configuration is probably broken in this way, which I will (conveniently) tell you about now.”

For Ads, I’d probably spend quality time digging into how to optimize niche ads, without breaking the bank.

I think focusing on the MS market is a good call – sounds like a solid approach, and I think your revenue validates it. Nobody goes broke providing value to Microsoft enterprises. There’s a ton of very relevant marketing info in the discussions on this forum, and you you’d do well to check out these two additional podcasts: Startups for the Rest of Us and Marketing for Founders.

Sorry, guys. I’m new here and not quite accustomed to the UI and conventions.

@dgrace: Thanks for your interest, Daniel!

You turned on the for pay switch a year ago – was it up and free before then or just wasn’t released?

Yeah, it was in public beta for year. No timebombs, no nothing – pre-release version still continue functioning.

How do you handle licensing?

Licensing is tricky indeed. I cobbled together a simplistic licensing mechanism which generates Base64-encoded digitally signed XML which HgLab validates by using an embedded public key. It’s not that unbreakable, but hey, “let honest people pay”.

Evaluation licenses are obtained via the web site and they are valid for 45 days, but there’s no limit on how many “evaluations” one gets. Theoretically, it’s possible to use HgLab without paying a dime, but that’s not happening.

Hooked up to my “shop” over at FastSpring is a remote license generator, which calls back to, where an actual license is generated. It is then added to a standard FastSpring notification email and is sent to the customer. No licenses have been lost so far.

Are you worried that HG might fade into obscurity and git might “win”?

As for Git winning, I’m not particularly afraid of that. Mercurial has reasonably strong foothold in a corporate environment and that’s fine for a one-to-several person shop. What I am afraid of, though, is Atlassian, which has a self-hosted Git server called Stash, and the #1 feature request is adding Mercurial support to it. Now, Atlassians are not terribly keen on Mercurial these days, but I still feel uneasy.

@perceptec: Thanks, Michael!

Find out where those guys hang out (I know: easy for me to say.)

I do hang out on various tech- and programming-related forums, with little success.

I’m also trying to get into blogging and I have quite a few post ideas, but being a non-native speaker I find it very hard to write enaging (or provocative) enough texts to keep readers interested.

For Ads, I’d probably spend quality time digging into how to optimize niche ads, without breaking the bank.

For Ads, I’ve yet to find a more-or-less up-to-date Google Ads manual. The web interface scares the hell out of me with all the Campaigns, Ads, Conversions, etc.

coreysnipes: Thanks, Corey! Can’t at-mention you, sorry.

I think focusing on the MS market is a good call.

I concur, although sometimes, late at night, after a hour-long battle with yet another Microsoft-induced problem, I tend to think that I should have gone into carpenters instead. But that’s very rare and I think I’m not alone here.

I’m a regular listener of “Startups for the Rest of Us”, but “Marketing for Founders” is a nice discovery. Subscribed! Thanks a lot!

1 Like

MFF is amazing.

Back to your product though: MS is pushing its TFS these days. My client’s shop is all built around it, and it is UGLY and SLOW. Do you plan to compete with them at least in some areas? E.g. there are no tasks in your server, right? No documentation store (or there’s Wiki?).

Oh I do plan to compete. I don’t know how, but I am :slight_smile:

HgLab already has built-in Wiki (backed by a full-fledged Mercurial repository so that it can always be interacted with offline) and it will have an integrated issue tracker and, which is most important, merge requests – something not achievable with a centralized VCS.

Actually, this very logic is achieved with TFS by granting access to a development branch. I.e. I branch your branch, and do the changes. But I cannot merge into your branch, so I request you to merge the code in.

Same effect, eh?

How exactly does one request merging in a branch? Via email (or somesuch), I presume?

The beauty of merge requests is that they are explicitly initiated by the “contributor” and that there’s history to them. You can track progress of the contribution, discuss and review code down to the line, see the overall impact of your changes, invite others to collaborate on your branch, etc.

All of these things are theoretically possible with centralized VCS. Some parts of it (the discussion, say) are actually easier. That said, historically centralized VCSs have done a very very poor job of implementing features of that sort. Sounds like TFS does at least some of it, though.

Well, this is not TFS per se, but a process established on top of it. The key for it is to have ACLs per branch. If there is no ACL, I can always merge my crap into your prestine branch.

Which reminds me – AD… oh, I see that @anton_gogolev listed it in a Features section. I would put it somewhere more prominent, because integration with AD is valued very high by Windows shops, as I have noticed.

I would probably changed the main header from “Mercurial Server for Windows” to “Mercurial Server for Windows Shops”.

Yesh. Or, rather, via a TFS ticket. So one can build a review and approval process on top of that in TFS, but TFS is so ugly that nobody dares or cares, and all the discussion goes in the email.

I really doubt that. The way CVCSes inherently do branching and the very fact that they track revisions, not changesets are very alien to the idea of merge requests. In a CVCS one can commit all (ACL allowing) over the source tree, in each “branch” and this fact alone makes it nearly impossible do untangle the mess and decide which changes belong to which branch. Now, you can always compare two “subtrees” – “feature branch” and “mainline branch”, that is – but merging these will be a royal pain: no three-way-merge, no rename tracking, no nothing.

Yes, ACLs to play a role, but what’s most important is the discussion and the history. And with upcoming Changeset Evolution, merge requests will be helluvalot more powerful than anything Git has to offer.

Cool and all that, but most shops do not use the advanced features. The average level of knowledge about DVCS (or VCS, for that matter) forces the shops to stick with a few most basic and understood operations.

Branch, commit, merge. That’s pretty much all we use now. A “baseless merge” (a merge between branches belonging to different subtrees) is already considered an advanced operation, and there are only two people in the team who are trusted to perform it.

Efficient and visible discussion around the sources though is a huge selling point. I think you should highlight it more; it is common someone asks “how this piece got here? who approved it?” and there is no history of conversation save for someone’s email (which still needs to be found).

1 Like

We’re mixing terminology. There’s absolutely nothing preventing a centralized VCS from tracking changesets. The only requirement is that there is a centralized authoritative copy enforced by the technology. GitHub is quasi-centralized built on top of non-centralized, for instance. I don’t think there’s a succinct name for what you’re talking about.

Great website @anton_gogolev. The product/vision looks pretty mature. Do you manage all the development yourself or outsource some of it?
I also target the MS market with my product SqlSmash. But I have been live only for 3 months and still learning my way through this :smile: . I see a bunch of other similarities such as using C#, WiX, FastSpring.
What city are you based out of?

Yep, all by myself. Oh, the logo I outsourced, but all the rest is “100% bootstrapped”

Isn’t WiX a royal pain, eh?

I’m from Moscow, Russia.

You cannot use “eh”, you Moscovite! This is a Canadian thing! :smiley:

P.S. I’m from СПб, and now Toronto.

1 Like