Porting Checklist

An overview of what library-level features are implemented and what's left to do...

  • Db abstraction layer: complete and more or less stable.
  • Infrastructure for opening/closing checkouts/repos works. Infrastructure for a config db is in place.
  • Fetching blob content (raw or delta-applied) and low-level content saving is working.
  • Artifact (e.g. manifest) parsing, generating, and delta manifest baseline traversal works. Most artifacts can be exported from a canonical Fossil repo then parsed and exported by this API with 100% fidelity, with the minor exception that _some_ timestamps (D-cards) differ by a millisecond (round-trip precision change), which changes their hash. So far i have only see the imprecision affect "artifically generated" artifacts, not "real" ones. Artifacts are never "round-tripped" like that in real use, anyway - it's only for testing the parser and generator.
  • Adding new control artifacts (tag changes) is basically working.
  • Low-level delta generation and application is working, as well as the (incidentally unrelated) diff-generation code (context- and side-by-side).
  • Manifest crosslinking. This is a large part of what goes on during any changes to a repository. Most of the work is finished here but there are still some cases to handle (namely tickets) and obscene amounts of testing to be done. And a testing infrastructure needs to be architected and put into place.
  • Schema initialization/creation is complete. The rebuild process (closely related but far more intricate) is far down the list of TODOs.
  • Wiki features are basically working: loading/saving, but it needs APIs for working with wiki history.

Actively in progress (today==March 14, 2014):

  • Event bits
  • Application-level bits (fcli).
  • "vfile" (checkout-related) infrastructure is mostly ported in. This includes checkin support.
  • Tickets APIs have been started but have a low priority. The v1 impl requires a good deal of application-level infrastructure (namely TH1), and there are no plans to port TH1 in at the library level.
  • All of the bits needed for performing a checkout are in place with the exception of UNDO support and the actual creation of the checkout db (but we have all the pieces needed for that).

Areas which have not yet been started or where no notable progress has yet been made, in no particular order:

  • Handling of symlinks in a repo.
  • The 'rebuild' operation, i think, will essentially be the ultimate test of the core library components. If it can do that, it can "probably" do anything else.
  • UI. The library has no UI, of course, but as it is fleshed out one may eventually be needed, even if it's only a CLI shell.
  • Synchronization. There are lots of underlying bits to finish before this can be implemented.
  • Networking. Far down the list of TODOs. The core library needs know nothing about networking.
  • "Received from" (rcvid field) info on artifacts. In v1 this is tied closely to the network layer.
  • Versionable config settings.
  • Application/honoring of certain config settings. e.g. ignore-glob and friends are currently not honored, and case-insensitivity support is completely untested.