What is 9legacy?
9legacy used to be an alternative distribution of Plan 9 from Bell Labs. 9legacy is now a continuation of Plan 9 from Bell Labs. It is a set of patches based on the latest release of Plan 9 from Bell Labs and regularly updated..
How 9legacy was born?
We are commonly administrating dozens of file servers around the world. Since we were using many patches not available in Plan 9 from Bell Labs, we needed a way to centralize all these patches and provide a mechanism to automatically build a Plan 9 distribution from a specific set of patches, always synchronized with the most recent Plan 9 from Bell Labs changes. 9legacy was born to fill this need.
When 9legacy was born?
9legacy was born in summer 2010 as both a Mercurial repository and a simple list of files and patches in a HTTP directory.
Following the increasing amount of patches and the need to expose them in a simpler and clearer interface, the current 9legacy website was launched in june 2011.
Is 9legacy a fork of Plan 9?
9legacy is not a fork, it is an experimental patch queue for Plan 9 from Bell Labs.
We strongly believe it is not a good idea to fork Plan 9 from Bell Labs. Too many communities is the enemy of the community. Plan 9 from Bell Labs is and will always be the reference distribution of Plan 9.
We push as many patches as possible we find sufficiently interesting to Plan 9 from Bell Labs.
What is included into 9legacy?
You can see 9legacy as an experimental branch of Plan 9, filling the gap between developments in progress from anywhere and the stable Plan 9 from Bell Labs distribution.
Different type of patches are available in 9legacy :
- patches that were imported from elsewhere,
- patches that aren't interesting enough to be submitted to Plan 9,
- patches that are currently being reviewed to be merged in Plan 9,
- components that were removed from Plan 9, like IL or Ken File System,
- experimental stuff, currently being developped and not ready yet to be merged in Plan 9.
Which tools are used to maintain 9legacy?
Developers choose to produces patches with any tool they want. It is common to use Git, Mercurial or diff. Then, patches are always submitted as standard unified diff files, which are applied with patch. Both diff and patch tools are available in Plan 9, thank to APE.
The 9legacy build machinery is based on the same tools used to build Plan 9 from Bell Labs, glued together with custom rc scripts.
A Git repository, containing a mirror of Plan 9 from Bell Labs changes since December 12, 2002, is available for the developers who use Git.
Why should I use 9legacy?
You should probably not. We recommend you to use Plan 9 from Bell Labs.
You can use 9legacy if you are interested by particular patches, hardware support or want to try experimental stuff.
Are there any other Plan 9 distributions?
Yes, of course. You can give a look to 9atom from Erik Quanstrom. He did excellent work and added many hardware support and improvements. There is also NIX, an experimental operating system for multi-core CPUs. You can also take a look to plan9front, which made some interesting features in various areas. More recently, Harvey OS made 64-bit Plan 9 buildable with GCC and Clang.
Some small components of these distributions are included in 9legacy.
We encourage you to take a look to the other Plan 9 distributions and discover all the interesting features developped by the Plan 9 community.
How to apply the 9legacy patches?
Perhaps this is not obvious for everyone. For example, if you want to apply the termrc-timesync patch :
cd / hget http://www.9legacy.org/9legacy/patch/termrc-timesync.diff | ape/patch -p1
If you want to unapply a patch, use ape/patch -R.
How to submit a new 9legacy patch?
Contributions are highly appreciated. Patches should be sent as standard unified diff format against Plan 9 from Bell Labs. On Plan 9, you can use ape/diff -Nru.
We provide an helper script called sdiff ("source diff"), which diff the files specified in arguments with /n/sources.
Patches should be sent to the following e-mail address:
I don't understand, why it isn't a fork?
A fork is a branch created at some point in the history of the original project, then optionally partly synchronized either regularly or ponctually.
9legacy is not a fork because it is a set of independant patches always located on top of the current Plan 9 from Bell Labs. If Plan 9 evolve, most of the patches will still apply as is, even if sometimes, they could need to be rediffed or modified to account incompatibilities in its evolution. In the exact same manner, most of the patches will also apply on derivatives of Plan 9, as long as they don't differ in incompatible changes.
In 9legacy, most patches are totally independant from each other and few depends on one or two other patches. It's up to the user to choose which patch to use.
9legacy also evolve in the same spirit as Plan 9 from Bell Labs and no large or incompatible changes will ever be done.
What are the status on the patch page?
The status reflects the origin, quality or purpose of a change. The most interesting patches are included into the 9legacy CD image, so they don't have a status column.
- experimental: this is an interesting and working change, but it should be more polished before being able to submit it
- draft: this is a work-in-progress change which is currently either incomplete or broken
- import: this patch was imported from elsewhere
- submitted: this patch has been submitted to /n/patch but was not applied yet
- applied: this patch has been submitted to /n/patch, and was applied
- retired: this change used to be part of Plan 9, but was deprecated and removed
- local: this is a personal change I made on some machines, it could be interesting, but not for everyone
- informational: similar to local, but also have a documentary purpose
- specific: this is a change that was done to achieve something specific, but you probably shouldn't use it as is
Is Plan 9 from Bell Labs still maintained?
Since January 2015, Plan 9 is officially no longer maintained at Bell Labs. The latest change and CD image was published on January 10, 2015.
Because of this, 9legacy is now more a continuation of Plan 9 from Bell Labs rather than an aternative distribution.
I want to use the Go programming language on Plan 9. What should I know?
You should consult the Go on Plan 9 - Frequently Asked Questions page.