-
Notifications
You must be signed in to change notification settings - Fork 2
Development History
When KBUS was first distributed via Google Code, we used a subversion repository. The contents of this are preserved in the later Mercurial and Git schemes as the legacy repository.
-
version 0.1 (tagged on 8 Dec 2009) was the "old stable" version. In case you need it, the revision control tag is
v0-1in thelegacyrepository. -
version 0.2 (tagged 27 Jan 2010) is the last version with the old KBUS message datastructure. It contains preliminary work for Replier Bind Events. The revision control tag is
v0-2, again in thelegacyrepository.
Revisions after version 0.2 have:
- a different KBUS message header (specifically, there are be some extra header fields). The KBUS message header start guard has been changed in the new message headers.
- a different API for the C library, libkbus
- preliminary Limpet support, for peer-to-peer messaging (this is alpha code until it has been tested in real applications)
version 0.3 (tagged v0-3 on 22 Feb 2010, in the legacy repository) is the last version to impose a limit on the size of "entire" messages, when writing to KBUS devices. The revision after fixes issue 26, and allows writing "entire" messages of arbitrary size. It also makes a minor change to the C library API, as "short" functions become "entire" functions (again).
Revision 339 (in the Subversion repository) makes message names reference counted (as message data already was), and also rearranges the in-kernel storage of messages. This should be a good thing, may be slightly faster, and may have introduced newer bugs.
After version 0.3 the repository was converted to Mercurial, then split up into a handful of sub-repositories. Older tags were removed from the default repository and placeholders v0-1-partial (etc.) left in their place.
The motivation for this was that it was a bit unfriendly to force users to clone a repo containing the bulky talks and slides material.
The project repositories now look like this:
-
[default]: libkbus, cppkbus, jkbus, python, utils, docs source, init.d. Pulls in 'kernel' as an hg subrepo. -
kernel: Just the kernel module, with a Makefile for building outside of the Linux kernel tree. -
html: Built HTML docs. Pulls indefaultas an hg subrepo. -
presentations: The contents of talks/ and slides/ moved here.
The kernel module was also cloned onto github, in preparation for submission to the Linux kernel maintainers. Specific repositories were:
-
https://github.com/tibs/kbus : The kbus kernel module. Note the series of branches with names starting
1-through5-, which provide a view of the kernel module as a series of patches that "grow" its functionality. - https://github.com/crazyscot/linux-2.6-kbus : kbus integrated into a Linux tree. At the time of writing this is based against 2.6.37.
...unfortunately it looks as if the kernel submission has been abandoned. However, the work required for it, and the advice from the LKML has been invaluable in making the kernel module a better piece of code.
The github work has now been merged back into the mainline KBUS repositories, and this has also been taken as an opportunity to move to using Git as a VCS.
Our repositories are now
- "default" - a single repository for both userspace and kernel code. This combines the Mercurial "default" and kernel repositories, with the github changes integrated. The repository thus has two "tails" - one representing the "default" (userspace) repository and the other the kernel repository - which join together to form the current HEAD. Note that the github
1-through5-branches are also preserved. Tags which were previous called something-partial are now called kernel-something or userspace-something. -
wiki- the wiki, containing this very page -
presentations- the same content as the Mercurial repository of the same name -
legacy- the same content as the Mercurial repository of the same name, and thus the same content as the original Subversion repository.
The Mercurial "html" repository is no longer needed, as documentation is now automatically generated by the wonderful ReadTheDocs at http://kbus.readthedocs.org/.
- Mercurial's subrepo support is much more sophisticated, and simpler to use, then Git's submodule support.
- In our actual use of the project in-house it is a lot more convenient to have a single repository.
- Any user of either kernel or userspace KBUS needs at least one common header file, so we'd otherwise have to duplicate that.
- If we're not actually getting KBUS into the kernel sources, there is less pressure to have the kernel code be separate.
The post-split repositories are likely to be tagged v0-4 once the integration work and tests are complete.
Mostly personal preference. It's the VCS we're most comfortable with (although note that Mercurial's support for Git repositories seems to be rather good).
The original Subversion repository is still (directly) accessible, as https://kbus.googlecode.com/svn/.
I'd rather assumed that the Mercurial repositories would still be accessible as well, but this doesn't appear to be the case. However, I've uplodaed copies to obviously named repositories at https://bitbucket.org/tibs in case they're ever needed (well, I didn't bother with the html repository).