To put the future into perspective, some of the things that are already done in nosh that were once in the future:
linux/wsvt25 terminal emulator
with a whole load of extra DEC VT 52x features
BSD binary packages to feature match the Debian ones:
This is now done, as of version 1.16.
Debian binary packages to run the
One can do this with version 1.18.
system-manager as process #1:
FreeBSD/PC-BSD binary packages to run the
One can do this with version 1.20.
system-manager as process #1:
finish the
This now has, as of version 1.17, full rcctl shim: get and set subcommands.
more Debian sysinit service bundles:
As of version 1.18, one can now bootstrap Debian Linux as a purely nosh-managed system.
better
As of version 1.17, there is now a rc.conf/fstab/ttys conversion: /etc/system-control/convert/ directory that contains a bunch of redo scripts that will import settings from external configuration files into service bundles.
It will re-import settings if the files change.
bootstrap file/directory population:
mtree would be ideal for this, and the /etc/mtree/ convention already exists, were it not for the fact that Linux ports of mtree lack modern BSD features.
mouse events in Linux userspace virtual terminals:
This is now done, as of version 1.21.
mouse events in FreeBSD/PC-BSD userspace virtual terminals: The BSD mouse subsystem is not quite the same as for Linux.
Warden integration:
As of version 1.21, PC-BSD Warden jails and FreeBSD 9 jails are foreign configuration formats that are converted into service bundles.
/etc/rc.d conversion
In nosh version 1.9 I announced my on-going effort to provide workalikes or replacements for the 157 things that one can find in /etc/rc.d/ on FreeBSD.
Enough have already been done that it has been possible for quite some time to run an entirely nosh-managed FreeBSD system, and indeed I have been.
As of nosh version 1.21 this list has been whittled down to these remaining:
adjkerntz, atm1, atm2, atm3, bluetooth, bridge, defaultroute, devfs,
gbde,geli,geli2, gptboot,initrandom, ip6addrctl, ipfw, jail, kldxref, mdconfig, mdconfig2, mountd,natd, netif,netoptions, netwait,nfsclient, nfsd, nsswitch, postrandom, power_profile, ppp, random, rfcomm_pppd_server, routing, rtadvd, serial, static_arp, static_ndp, stf, tmp, var, virecover, fusefs, hald, pcbsdinit, pefs, wardenrc, webcamd
These fall into seven main categories:
Things which I don't have in use anywhere and so have difficulty in testing: ZFS, pf, faith, ATM, AppleTalk, and GELI.
I haven't encountered a machine with diskless bootstrap since 1990. So things like root, var, and tmp are fairly tricky to test, too.
Things which have astoundingly complex ways for saying enable="YES" flags="wibble".
These are going to need some heavyweight conversion procedures.
Things which never really belonged in /etc/rc.d as part of a start-stop model at all.
power_profile and serial are prime examples.
Things which probably should be done a different way, such as pcbsdinit, cleartmp, and cleanvar.
Things which definitely should be done a different way under nosh service management, such as mountcritlocal, kld, abi, ibcs2, and syscons.
Things which even the BSD world is saying goodbye to, such as sendmail (now gone entirely from OpenBSD and DragonFly BSD).
Please feel free to write further service bundles. The idea is to have as complete a service bundle set as we can. If you can provide and run a repository for service bundles for the world to use and to add to, I encourage you to do so. If you can persuade software vendors to ship service bundles in their packages, I encourage that too.
/usr/lib to /lib
Please join me in asking the BSDs to put clang's C++ runtime library, libc++, in the right place.
Currently it lives in /usr/lib, which isn't guaranteed available at system initialization time.
To make lives a lot easier, it should live in /lib, where the C runtime library already does.
Then the binaries that are statically linked no longer have to be.
These are some of the various items that it would be good to do:
Iron out more rc.conf incompatibilities:
OpenBSD uses a different setting naming scheme to that used by PC-BSD/FreeBSD,
which is different yet again to that used by NetBSD.
Improve terminal-emulator speed:
It could be made faster by memory mapping the display buffer file.
copy and paste mechanisms in the userspace virtual terminals: Currently, there's no support for such.
input methods in the userspace virtual terminals: I don't want to have to roll my own input method protocol; I would rather implement an existing protocol for existing input method tools. But I don't want to require X11 libraries and toolsets, and direct device drawing access, for user-space virtual terminals, either; and the protocols that I have found all do.