Comprehensive architecture overview


#1

Hello -
It would be beneficial to have an overview of how BK stores and manages objects, and what parts of the source code aid in the same.

For instance, the git plumbing and porcelain chapter fully describes git objects, their storage and code for getting that to work.

If you would like to provide the knowledge training, I’ll be happy to create documentation in a format of your liking for free, so that more people start delving into BK internals.


#2

Agreed it would be very useful and we have pieces of it scattered around. Perhaps we could get on the phone or IRC and go over what you would like to learn.

In general for longer documents we have favored using asciidoc.

Here are the different areas I see:

  • File format
  • Checksum/XOR wrapper
  • blocked random access compression layer.
  • The format of the data for the files (not SCCS)
  • The SCCS weave and how it works. And why it works really well. (I actually have this started, but got distracted)
  • the special Binary weave format used for the ChangeSet file
  • Network protocol
  • the key exchange for doing graph compares over a high latency connection
  • the bk patch format
  • Lots of fun software magic to make this stuff fast.
  • BAM
  • Nested

#3

Agreed that we desperately need more docs. I’m also willing to help explaining anything you want to learn about. As @wscott said, we’ve used asciidoctor in the past for docs so we could get a repository going on bkbits.net


#4

Thank you for the offer of sharing more information gentlemen. I’ve emailed sent you an email to schedule a couple seasons. Thanks