It supports consoles as well, via JSMESS. https://archive.org/details/gg...
cgroups just enable systemd to collect all of the log entries from all of the processes belonging to a service without missing any*. When a sysvinit service daemonizes itself, the pid of the daemon isn't the same as the pid of the process that init actually created. This means that every service has to keep track of its own pid (in a pidfile), and that every service would have to report this information to syslog somehow.
Or you could add this capability to init, but then your new init is no longer doing just one thing and this is exactly the complaint most people have about systemd. Also, be careful not to change the existing interface with syslog, because then you're imposing your own views on everyone else, just like folks are saying about systemd.
Oh, and if your service logs to syslog, and it's being run under systemd, then systemd intercepts those and attaches all of the extra metadata before adding the log entry to the journal. You don't need to rewrite anything to be compatible with systemd. In fact, if you also have syslog installed then systemd will automatically send everything that gets logged to syslog as well; you get both at the same time and neither steps on the other.
I don't like systemd because it is systemd, I like it because it gives me a great way to query my logs and find out what my systems have been up to. If you give a sysvinit system the same capabilities then I will use those capabilities just as often.
* Well, cgroups also let systemd do a few other things not related to logging, such as setting resource limits on individual services, but I don't use them much myself.
If you think you can add this nice thing to syslog, then please do. Quite a lot of people will sing your praises, in fact.
If you have a service called 'foo', then 'systemctl status foo' not only shows you whether the service is running, it also shows you the last 10 log entries created by that service. This is great when the service failed; usually the error message will be right there.
How does it do this? Well, because all processes created by the service are in the same cgroup, all of the log messages (and even anything they print to stdout, which would have been lost otherwise) can easily be tagged with the service name (and a bunch of other metadata). You can use journalctl to query the journal for the logs from a specific service, and systemctl status does this for you.
Yes, he is amazing. He gives half of those SICP lectures as well, trading off with Hal Abelson, another great engineer and lecturer.
A rocket is a mass driver, and all of the "scifi" types of propulsion break the laws of physics one way or another. Space elevators would be pretty nice, but we still haven't found a material strong enough. Carbon nanotubes are the current hope, but we can't make them long enough yet; they'd have to be very long indeed to make a strong enough elevator. Short nanotubes have to be glued together and then you're down to the strength of the glue.
For the most part it's a difference in magnitude. The speeds the rockets achieve are much higher than any airplane, let alone car, ever manages. The thrust of the engines is stupendous, the liquid H2 and O2 fuels are cryogenic, the flame temperatures in the engine are extreme. In fact, they're so extreme that the engines use precise control over the flow fuel and oxidizer entering the engine to create a layer of cooler gasses around the inside of the engine nozzle, so that it doesn't melt or ablate entirely away. Everything has to work in vacuum and at ambient air pressure and at max Q during flight.
All of this and more adds up to a much harder design problem, much more stringent test requirements, much tighter manufacturing tolerances, etc. The principle is the same, however; any change to one component of a system may require changes to every other component.
The one thing that all forms of engineering from (whether software, civil, aerospace, or other) have in common is the management of complexity. The automotive engineer designs the engine mounts in your car to accept a wide range of engines, so that they can manufacture several variants of the same car with different engines without having to redesign every component. Similarly, SpaceX has greatly reduced their cost and risk by reducing the complexity of their rockets; one way they did this was to use the same engine for both the first and second stages of their rockets (the first stage simply uses more of them). Another way was to avoid cryogenic fuels; they have a lower specific impulse (fuel efficiency), but a much greater space efficiency (liquid H2 is very light; that orange tank is huge, and 80% of it is for the H2 tank) plus you avoid having to deal with cryogenic fuels, and the complicated materials engineering that goes into designing the tanks to hold them.
If you want to know more, MIT has some great lectures on the subject, even ones suitable for non-engineers. A good one is An Electrical Engineering View of a Mechanical Watch . The description of this lecture only touches on superficial matters; Sussman's real point is that the means of abstraction present in an engineered system can be applied to any other engineered system, and that it's only by designing the right abstractions that engineers make continual progress in designing newer and better systems. He states this directly in the first two minutes, which is quite handy. You might also check out the video lectures for the Structure and Interpretation of Computer Programs , the first lecture of which goes into much the same topics in the realm of software engineering.
Unlike in Kerbal Space Program, when you stack rocket components on top of each other you have to reengineer the bottom one to hold up the top one; they say that they're reusing the main tank, but that might be true in a narrow sense if they reuse the H2 tank inside the orange Space Shuttle External Tank. Then you have to engineer the manufacturing processes and factories for producing any new components (and there will be lots of those), plus the modified one (easier, but still plenty to go around), plus you have to engineer the test facilities for all the components, and you have to test the test facilities, and then test the components, and then test-launch the vehicle, etc. Don't forget to document everything, and to design training procedures so that you can hire new people to build these things, and test them, etc, etc. It actually is rocket science.
I mean, all you have to do is attach a machine larger and more powerful than the Large Hadron Collider to your rocket ship and then you can manipulate mass. A little bit.
There's a default UI, but you can turn it off and use whatever HTML/CSS/XML/SVG you care to dream up.