27 ms·
Show HN: BitKeeper – Enterprise-ready version control, now open-source
- okket 10y agoThere is an official mirror on GitHub: https://github.com/bitkeeper-scm/bitkeeper https://github.com/bitkeeper-scm/bitkeeper
- luckydude 10y agoIt's a read only mirror, the read/write mirror is on bkbits.net. But we'll maintain the mirror (or you can, bk has fast-export which creates a perfect mirror in git).
- AceJohnny2 10y agoBy "fast-export", you mean Packard's "fast-import" format, editable with ESR's RepoSurgeon?
- melloc 10y agoIs there a way to do the reverse, and convert a Git repository into a BitKeeper repository? I found the fast-export manual page: https://www.bitkeeper.org/man/fast-export.html https://www.bitkeeper.org/man/fast-export.html But it doesn't look like there's any fast-import. Do you have some recommended way if I wanted to convert an existing repository to try BitKeeper out?
- sdesol 10y agoWould you describe the exporting process to git, pretty painless? If so, I'll look at adding bitkeeper support for my git analytics/search tool. I've uploaded some pictures that shows what the git repos that you have hosted on GitHub looks like at: http://imgur.com/a/nVvov http://imgur.com/a/nVvov Since the export process adds "bk: <changeset>" to the commit comment, it'll be easy to tell that it was created via your fast-export tool, which means my tool can easily point you back to the bitkeeper web interface.
- jordigh 10y agoWell, that took a long time... I wonder what changed in the eleven years that Git and Mercurial were deployed to replace bitkeeper.
- luckydude 10y agoLots of cross platform goodies in there as well as some interesting data structures. For example, our list data structure is in lines.c, it's extremely small for a small list and scales nicely to 50K items: http://bkbits.net/u/bk/bugfix/src/libc/utils/lines.c?PAGE=anno&REV=56cf7e34BTkDFx47E54DPNG51B2uCA http://bkbits.net/u/bk/bugfix/src/libc/utils/lines.c?PAGE=an...
- adrianN 10y agoWhy would I want to use this over git or mercurial?
- desdiv 10y agoYou wouldn't, unless you have very specific niche needs. They're pretty upfront about it: >Why use BitKeeper when there are lots of great alternatives? >For many projects, the answer is: you shouldn’t. https://www.bitkeeper.org/why.html https://www.bitkeeper.org/why.html
- luckydude 10y agoProbably the single biggest reason, aside from it's easier to use than git's CLI, is that it has sub-modules that work exactly like files do in a repository. No extra options, just clone/pull/push/commit/etc. Full on distributed workflow. BitKeeper itself is a collection of repositories. Download an install image, install, and clone it: $ bk clone http://bkbits.net/u/bk/bugfix $ cd bugfix $ bk here PRODUCT default $ bk comps -m ./src/gui/tcltk/bwidget ./src/gui/tcltk/tcl ./src/gui/tcltk/tk ./src/gui/tcltk/tkcon ./src/gui/tcltk/tktable ./src/gui/tcltk/tktreectrl ./src/win32/dll/scc ./src/win32/dll/shellx ./src/win32/dll/shellx/src ./src/win32/msys ./src/win32/vss2bk which shows that what we clone by default doesn't include all that other crud (we cache the build result from that and populate it as needed to do builds). Play with it, it's very different from Git, the subrepo binding is just like file bindings. Everything works together and obeys the same timeline.
- tommoor 10y agoFeature set wise this has a number of great advantages over git! It's a shame all of the tools today are so git-centric in some ways
- stonemetal 10y agoIt claims to be able to handle binary files well which would be a big deal to game development. They have mostly passed on git and mercurial since they can't handle game assets.
- rburhum 10y agoThis is very cool... but also, kind of a bit late. The market already adopted git and the momentum is there. Unless there is a trivial way to switch back and forth from git or there is something that is orders of magnitude better, this is a decade too late.
- tommoor 10y ago'A bit late' might be understatement of the day :)
- dsr_ 10y agoFor people who don't know the history -- McVoy offered free bitkeeper licenses to various open source projects, and the Linux kernel switched to it. After Andrew Tridgell (SAMBA, among other projects) reverse-engineered the bitkeeper protocol [1] in order to create his own client, the license was rescinded for everyone. As a result, Linus wrote git. [1] https://lwn.net/Articles/132938/ https://lwn.net/Articles/132938/
- gadders 10y agoAs I remember it, it was a bit of a douche move by Tridgell, driven by a Stallman-like free software ideology.
- striking 10y agoHere's an article about that: http://www.theregister.co.uk/2005/04/14/torvalds_attacks_tridgell/ http://www.theregister.co.uk/2005/04/14/torvalds_attacks_tri...
- tubelite 10y agoAs I remember it, he did telnet bk-server 5000 and typed "help". https://lwn.net/Articles/132938/ https://lwn.net/Articles/132938/
- gadders 10y agoThat's the "how" not the "why".
- khrm 10y agoIt wasn't. He gave conclusive reply which established that it's ethical (just telneting and help). Unless you believe samba and everything else is unethical and you club every reverse engineering under one umbrella, your comment is wrong. http://www.theregister.co.uk/2005/04/14/torvalds_attacks_tridgell/ http://www.theregister.co.uk/2005/04/14/torvalds_attacks_tri...
- Mizza 10y agoI don't think it's fair to call people douches because they are committed to their moral principals. Especially so here, where the benefit to humanity over the alternative is so clearly obvious.
- talles 10y agoToo late?
- PuercoPop 10y agoSomething I'm wondering and the man page doesn't clear, does it track files across renames or does it only track content like git?
- wscott 10y agoYes, files are tracked as first class objects as they are renamed.
- luckydude 10y agoIt tracks renames, it's not like git. Every file has an internal identifier, that's the actual file id, the name is a versioned attribute of the file.
- hansihe 10y agoHow does it detect renamed files in the filesystem? Thank you for open sourcing by the way, I can definitely see how some features (binary file handling, submodule handling) could be useful for large-scale projects like games.
- luckydude 10y agoEach history file contains it's internal name, much like a file system has an inode # that is the internal name for that file. We call the names "keys" and you can dig out the inode key like so (every delta has a key, the first delta is called the rootkey): $ bk log -nd:ROOTKEY: -r+ slib.c lm@bitmover.com|src/slib.c|19970518232928|52808|f3733b2c327712e5 The key is user@host|relative path|UTC|checksum|64 bits of /dev/random and they are guaranteed to be unique if your DNS config is correct (we don't create duplicate keys, look for the uniq db in the code). The way we version the entire tree is simple, it's logically (implemented differently for performance): <rootkey> <delta key> <rootkey> <delta key> ... where each rootkey uniquely identifies a file and each delta key identifies the tip as of that commit. Not sure if that is clear enough or not, ask away if not.
- 10y ago
- loeg 10y agoInteresting — FreeBSD 7 and 8 binaries available for download. Neither of those is a current supported release. It's like offering RHEL 3 or 4 binaries.
- wscott 10y agoWe found that by maintaining a build cluster with many old releases we tend to keep compatibility issues out of the code. Also, FreeBSD is very good about backwards compatibility so current releases will run these binaries just fine. However we will update the build targets as needed by users.
- X86BSD 10y ago+1 For FreeBSD support +1 For open sourcing BK I hope it works in your best interest. And I wish you all at BK the absolute best and thank you for all your incredibly hard work over the years.
- wscott 10y agoBTW, sorry to say we don't have a RHEL 3 release for you but in the 'complete list' are you can find stuff for RHEL 4. ;-) Really they are Debian 4, 5, 6, 7, & 8 but they match up with Redhat pretty well.
- fdhj4094njdf 10y agoRHEL 4 is still supported. Extended support is good for another year.
- to3m 10y ago1 year ago: https://news.ycombinator.com/item?id=9330482 https://news.ycombinator.com/item?id=9330482 What changed? Is BitKeeper still an ongoing business with some other model, or is that, as they say... it? I hope not.
- luckydude 10y agoThis is to answer this question and all the "too late" comments. Too late? Maybe. But we had a viable business that was pulling in millions/year. The path to giving away our stuff seemed like: step 1: give it away step 2: ??? step 3: profit! And still does. So what changed? Git/Github has all the market share. Trying to compete with that just proved to be too hard. So rather than wait until we were about to turn out the lights, we decided to open source it while we still had money in the bank and see what happens. We've got about 2 years of money and we're trying to build up some additional stuff that we can charge for. We're also open to being doing work for pay to add whatever it is that some company wants to BK, that's more or less what we've been doing for the last 18 years. Will it work? No idea. We have a couple of years to find out. If nothing pans out, open sourcing it seemed like a better answer than selling it off.
- isxek 10y agoAs someone who's also read about how Git and Mercurial started (and how Bitkeeper is involved in it), I'm interested in seeing how it will play out. I hope it does work out for you and your team. Thanks for getting it out there. I'm also interested how open-sourcing BK will improve the other systems, too.
- deleted 10y ago[deleted]
- jordigh 10y ago> I'm also interested how open-sourcing BK will improve the other systems, too. #mercurial in Freenode right now is monitoring this thread, very relevant to our interests. Someone at Facebook in #mercurial right now is trying it on some Facebook repo, to compare performance.
- jwilk 10y ago"[...] Linus moved to it and most of the developers followed. They stayed in it for three more years before moving to Git because BitKeeper wasn't open source." Um, the "because" part is not quite right.
- clacke2 10y agoGlosses over things, but is essentially accurate. Lots of people were not willing to use a proprietary tool, which prompted some reverse-engineering, which caused BK to withdraw their offer. If all free software activists had accepted the compromise of using the free-as-in-beer BK, git would never have been created.
- kstrauser 10y agoThat's not: They stayed in it for three more years [...] because BitKeeper wasn't open source. but They stayed in it for three more years before [moving to Git because BitKeeper wasn't open source].
- sspiff 10y agoI'm wondering: how does it handle large binary files? Any better than git or hg without extensions?
- luckydude 10y agoYes. Binaries are handled by one or more servers, we call them BAM servers. The servers hold the data and your repo holds the meta data, binaries are fetched on demand. You can have a cloud of servers so the binaries are "close" (think China, India, US).
- Jare 10y agoTwo questions: It is unclear to me if the BAM server is part of this opensourcing or not. The page talks about a 90-day trial. Also, it is common in other (usually non-D)VCS workflows to lock binary files while working on them, since concurrent changes can't be merged the way text files allow. Does BK support anything like this?
- ob 10y agoThe BAM server is part of the open source version. The 90-day trial is for the enterprise version (which is the same version, only with commercial support). BitKeeper doesn't support locking binary files.
- luckydude 10y agoWe open sourced everything. So yes, it's there. The commercial site is out of date. We have not done the centralized lock manager, we didn't get commercial demand for that (yeah, surprised me too). We could do it though, it's not that hard.
- Jare 10y agoThank you!
- foreign-inc 10y agoSome history from Linus himself https://www.youtube.com/watch?v=4XpnKHJAok8 https://www.youtube.com/watch?v=4XpnKHJAok8
- rdtsc 10y agoI see this as "features" https://www.bitkeeper.org/why.html https://www.bitkeeper.org/why.html See large repo support, security and others. Is that geared towards comparing with Git/Github? Is there a more focused comparison with those. i.e. both comparing to git itself and to GaaS (Git as a Service).
- bcantrill 10y agoThe grand irony is that Larry was one of the earliest advocates of open sourcing the operating system at Sun[1] -- and believed that by the time Sun finally collectively figured it out and made it happen (in 2005), it was a decade or more too late.[2] So on the one hand, you can view the story of BitKeeper with respect to open source as almost Greek in its tragic scope: every reason that Larry outlined for "sourceware"[3] for Sun applied just as much to BK as it did to SunOS -- with even the same technologist (Torvalds) leading the open source alternative! And you can say to BK and Larry now that it's "too late", just as Larry told Sun in 2005, but I also think this represents a forced dichotomy of "winners" and "losers." To the contrary, I would like to believe that the ongoing innovation in the illumos communities (SmartOS, OmniOS, etc.) proves that it's never too late to open source software -- that open source communities (like cities) can be small yet vibrant, serving a critical role to their constituencies. In an alternate universe, might we be running BK on SunOS instead of git on Linux? Sure -- but being able to run an open source BK on an open source illumos is also pretty great; the future of two innovative systems has been assured, even if it took a little longer than everyone might like. So congratulations to Larry and crew -- and damn, were you ever right in 1993! ;) [1] Seriously, read this: http://www.landley.net/history/mirror/unix/srcos.html http://www.landley.net/history/mirror/unix/srcos.html [2] The citation here is, in that greatest of all academic euphemisms, "Personal communication." [3] "Sourceware" because [1] predates the term "open source"
- luckydude 10y agoYeah this irony is not lost on me. But in both cases, the companies acted in self interest. Neither had the guts to walk away from their existing revenue stream. It's hard to say what would have happened. It's been an interesting ride and if nothing else, BK was the inspiration for Git and Hg, that's a contribution to the field. And maybe, just maybe, people will look at the SCCS weave and realize that Tichy pulled the wool over our eyes. SCCS is profoundly better.
- qwertyuiop924 10y agoI though SCCS had the same problems as RCS. What did it do differently?
- qwertyuiop924 10y agoToo late to dominate, but maybe not too late to cut itself a niche. It seems to have some advantages over the competition, and appears to be a reasonable contribution to the table. Besides, competition is always good. At the very least, Bryan Cantrill will be happy :-D.
- clacke2 10y agoAs you can see. :-) https://news.ycombinator.com/item?id=11668678 https://news.ycombinator.com/item?id=11668678
- devnonymous 10y agoGreat news! Better late than never! I hope they (or a client of theirs) create a BK backed service soon. I for one, think we need more than just github and altassian in the market if only to ensure the businesses don't take their users for granted (hint: sourceforge)
- ashitlerferad 10y agoThere are tons of alternatives to github/atlassian/sourceforge: https://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities https://en.wikipedia.org/wiki/Comparison_of_open_source_soft...
- stephenr 10y agoAmongst all the "too late I loves me some git" type comments, i figure I'd say thankyou and good luck with continued revenue. I haven't read much about bk so far, so forgive my lazy web question: does/can bk operate over standard ssh as git/hg/svn can, or does it require a dedicated listening server to connect to? Edit: answering my own question, yes it does support ssh as a transport
- benjarrell 10y agoDoes this come with any sort of web interface?
- luckydude 10y agoYes, there is hosting at bkbits.net and if you drill down to http://bkbits.net/u/bk/bugfix/ http://bkbits.net/u/bk/bugfix/ that's bk/web which is included in the release.
- drewg123 10y agoCan it import from git or SVN or mercurial? Looking at the bk import man page, it looks like it cannot import from any modern VCS. I see only RCS, SCCS, CVS, and MKS as options. This is unfortunate, as I have a mercurial tree I'd like to import.
- ob 10y agoWe have a git importer but it's not part of the "official" repo as there are still a few corner cases. I am afraid we don't have a mercurial importer though...
- drewg123 10y agoYou probably should publish the git importer -- it makes it really hard to try bitkeeper if you have to play with a pretend tree.
- ob 10y agoYeah, we're trying to figure out how to do that.
- voltagex_ 10y ago+1 would definitely give it a try with this feature
- thspimpolds 10y agoSame here, I want to get back to my BK love
- paulasmuth 10y agoThe nested repository feature sounds amazing. Dealing with both git submodules and git subtrees has been a huge pain for me. I'm looking forward to trying this out over the weekend. Is there some kind of util/script to import history from git?
- luckydude 10y agoWorking on getting a crappy one out there, we have simple and pretty crappy and complex / fragile but less crappy.
- civilian 10y agoI have some questions about Why.html: https://www.bitkeeper.org/why.html https://www.bitkeeper.org/why.html > Spending a lot of time dealing with manual and bad auto-merges? BitKeeper merges better than most other tools, and you will quickly develop confidence in the quality of the merges, meaning no more reviewing auto-merged code. Do you have examples of merge-scenarios that are a Conflict for git but resolve for BK? > BitKeeper’s raw speed for large projects is simply much faster than competing solutions for most common commercial configurations and operations… especially ones that include remote teams, large binary assets, and NFS file systems. Is there a rule of thumb for what size of repos benefits from BK? (And I suppose size could either be the size of a current commit or the total size of the repo.) Are there any companies like github or bitbucket that support BitKeeper repos?
- luckydude 10y agoWayne pointed to some stuff over on the reddit thread. As for size it's csets * files, as that gets big, Git slows down faster than linear, we're pretty linear.
- thspimpolds 10y agoI think you guys undersell BAM. That was such a clutch feature where i used BK. It's sad seeing git large file handling just show up, I garuntee it has a long way to go to get parity with BAM.
- kazinator 10y agoHow does BitKeeper scale to large projects? (Like, say, gigabytes of binaries.) This is a weak area of Git. --- From the "Why" page: BitKeeper’s Binary Asset Manager (BAM) preserves resources and keeps access fast by providing local storage as needed. BAM is great for any organization that handles: * Videos * Photos * Artwork * Office files * CAD files * Any large binary files
- justinclift 10y agoWonder if BitKeeper might be a viable alternative for Git LFS (https://git-lfs.github.com https://git-lfs.github.com) then.
- luckydude 10y agoI've been using BK/BAM for my photos, it's got 56GB of data in there and works great. I cheat because I added a way to check things out that uses hardlinks instead copies and I can check out the whole tree in 6 seconds. Doing the copy takes a lot longer: 9+ minutes. Hardlinks rock. On the commercial site there is a link to some BAM paper, take a look at that and maybe ask in the forum or irc if this gets lost.
- gbraad 10y agoGreat to see this finally happen... However, for 'us' Git remains a keeper.
- educar 10y agoI half-expected 'very late' comments before I read the comments. I wasn't disappointed. For those who commented that way, please reconsider this winner takes all approach to your outlook of the world. The world is better because of choice and it's in everybody's best interest to have more distributed version systems.
- manquer 10y agolate does not mean it is useless. The argument diversity is good is not so simple true, there are tones of benefits to diversity however there is cost to it too: fragmented finding talent, support, time to fix bugs, more eyes on the project, developer headaches in supporting competing standards so on...
- jeremycole 10y agoHuh. Thanks for doing this. As a MySQL employee in the early days I used BitKeeper and fell in love with it and kept using it as long as I could. I mainly use Git these days, but frequently miss BitKeeper -- BK felt a lot more natural to me than Git ever has.
- luckydude 10y agoHey Jeremy, long time no talk. We have the MySQL 6.x tree in BK, we can put up on bkbits if you like.
- ashitlerferad 10y agoToo late :)
- luckydude 10y agoYou and a lot of other people say that. Sure, if we want to take over from Git, it's late. But Git has left us with an opening, the only way Git works for the masses is Github, Git itself is too complicated and people "lose" their data (they don't but Git makes it appear like they did). I think people will play with BK and find out that it can work for everyone without something like Github (we still need it but it's a nice to have, not a requirement). We'll see. When I was proposing BK the intertubes said it would never work. I'm a little skeptical of the nay sayers.
- happosai 10y agoThe "too late" comments are depressing since they totally lack insight (who hasn't noticed the dominations of gits?). Yet also here in HN specifically you would expect people to cheer for pivoting into something new. Thanks for open sourcing BK.
- burfog 10y agoNah, it's easy. Before every git command, I just tar up the source. When git complains, I can untar to get things working again. To work with others, I fetch a new tree and then use "diff" and "patch" to merge my changes into the new tree. (seriously, as an experienced professional developer, I actually do this much of the time)
- setpatchaddress 10y agoSeriously? Your life would be easier if you simply learned to use git properly.
- burfog 10y agoWell, it's that bad. When I try to do things the "right" way I'm constantly exposed to the innards of git. I don't care about that stuff. It's complicated. It's a distraction from, you know, the actual task I was trying to do before git got involved. I've done significant work with 5 other version control systems, including BitKeeper and ClearCase. Nothing is as difficult as git. At this point, I give up. Screw it. I can do diff, tar, and patch. I have an editor. That'll do. I won't miss the confusing errors. Most importantly, I trust that these simple tools will not eat my work.
- ezoe 10y agoIt's too late. There is no reason to use non-git DVCS in 2016.
- ausjke 10y agoThis predates git, in fact if it was open sourced from the start git may never have existed, sigh, how ironic. If bitkeeper was open sourced it could be a powerhouse nowadays, open source and commercially. Now it is too late and honestly irrelevant.
- prirun 10y agoI think the same points made in Larry's 1993 paper could be made about various Linux distributions: Why a gazillion package managers? Why not a common filesystem layout? Why not a standard desktop? IMO, Linus should enforce his Linux trademark by forcing every distribution to follow a set of standards. If they don't, they can't call it "Linux". If he got them in a room and said "This is the way it's going to be, or else", they'd do it.
- JdeBP 10y agoThe people that you are looking for are the systemd and FreeDesktop people. The former have a manifesto addressing this: > The emphasis of systemd to provide a platform instead of just a component allows for closer integration, and cleaner APIs. Sooner or later this will trickle up to the applications. Already, there are accepted XDG specifications [...] that are not supported on the other init systems. > systemd is also a big opportunity for Linux standardization. Since it standardizes many interfaces of the system that previously have been differing on every distribution, on every implementation, adopting it helps to work against the balkanization of the Linux interfaces. -- http://0pointer.net/blog/projects/why.html http://0pointer.net/blog/projects/why.html They have a systemd filesystem layout that they say modernizes the FHS: * https://freedesktop.org/software/systemd/man/file-hierarchy.html https://freedesktop.org/software/systemd/man/file-hierarchy.... They have a project to rearchitect packaging: * http://0pointer.net/blog/revisiting-how-we-put-together-linux-systems.html http://0pointer.net/blog/revisiting-how-we-put-together-linu... They have the aforementioned specifications: * https://specifications.freedesktop.org/ https://specifications.freedesktop.org/ * https://www.freedesktop.org/wiki/Specifications/ https://www.freedesktop.org/wiki/Specifications/ They have a systemd DNS client: * https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients/ https://www.freedesktop.org/wiki/Software/systemd/writing-re... They even have events where people get in a room to be told "the way it's going to be": * https://news.ycombinator.com/item?id=10519578 https://news.ycombinator.com/item?id=10519578 * https://ti.to/systemdconf/systemdconf-2016 https://ti.to/systemdconf/systemdconf-2016
- teddyh 10y agoBitMover still holds all the copyright, and have all the developers. They obviously wanted to keep BitKeeper proprietary, and are only doing it now when facing irrelevance in the marketplace. If BitKeeper becomes popular again, who’s to say they won't take development proprietary again? Sure, the community could fork the latest free version, but there isn’t a free development community for BitKeeper – they’re all internal to BitMover.
- kingosticks 10y ago"The ability to seamlessly share only a subset of your source tree " I've spent a good 10 mins trying to find anything specific in the documentation about this but come up empty. Is this just by virtue of using submodules, ssh and filesystem permissions or is there something more that I'm yet to find? The lack of fine grain security on modern VCS systems is one of the reasons our monolithic repository is still using CVS. On a related note, the getting started documentation should be more prominent on the Web page.
- Annatar 10y agoThe biggest feature for me is the efficient handling of large binary files, because it means I could finally have a completely self-contained repository (clone and everything is in one place, plus free replication), but without the performance penalties which for example Mercurial incurs with binary files: https://www.bitkeeper.org/why.html https://www.bitkeeper.org/why.html I have to try it out just for that!
- paradite 10y ago$ bk clone bk://bkbits.net/bkdemo/bk_demo $ cd bkdemo # edit files using your favorite editor $ bk -Ux new $ bk commit -y"Comments" $ bk push As a user whose first CVS was git, I am quite confused by this "quick demo", I have no idea what "-uX" means, no idea what "new" means, no idea what "-y" means and why it is immediately followed by quotation marks instead of being separated by a single space. If bk wants to get new users onboard, it needs a better quick demo that makes sense to new users.
- masklinn 10y agoAccording to http://www.bitkeeper.com/testdrive http://www.bitkeeper.com/testdrive: * The -U option to bk tells it to operate on "user files". That is files that are not part of the BitKeeper metadata * The modifier x corresponds to "extras", files which Bitkeeper doesn't know about (changed files is c) * `new` adds files to the repository * [on commit] the -y option is for changeset comments (~commit messages) So `bk -Ux new` is `git add <untracked files>`[0] and `bk commit -y"thing"` is `git commit -m "thing"` [0] aka `git add $(git ls-files -o --exclude-standard)` or `git add -i<RET> <a> <*> <q>`