Alexis Sukrieh: Debian Developer
Here it is, I’m now an official Debian Developer.
Thanks to my sponsors, Frankie, Neil and Est ban, thanks to Philipp Kern who was my Applicant Manager, thank you all.
planet.debian.org, by virtue of its
.debian.org address, is an official project resource,
which is why I think it's a suitable forum to use for communication with
Debian's developers and users. Similarly, I am acting in my elected
position when I post to any other Debian mailing list, even though
subscription to other lists by developers is not required, and I act in
that position when I speak with the press. I expect to be held to account
for my statements in those forums, and I suspect you'd agree that I
couldn't avoid responsibility for them by claiming that I didn't make them
to debian-devel-announce.
Whether I have good reasons for falling behind on the monthly reports or
not, and whether or not I still think now they are the best way to maintain
visibility is beside the point. I fully expect, if I run for election
against next year, for my rivals to make much of the failure. My primary
concern, however, remains serving the membership of our organization, and
the users of our distribution, as best I can. To that end, I have a
question for you and others: should I re-post blog entries about leadership
matters to debian-devel-announce, or is that needlessly
duplicative? Along the same lines, is it desirable that I stop (or reduce)
blogging in favor of emails to debian-devel-announce?
Let me know what you think; post to the Planet, and/or mail me at
leader@debian.org.
:-)
This year, however, in addition to that, a couple of mini-conferences
are being piggybacked onto the Oldenburg meeting. These include the GNU Classpath and Debian
Java DevJam and the Debian Security
Summit.
The Java programming language is a divisive issue in the Free
Software community, and has a degree of controversy that sets it apart from
the usual language wars. The dominant factor in this controversy stems
from what Richard Stallman refers to as the Java trap; with the
specifications controlled, and the reference implementation kept
unavailable on DFSG-free terms by, an industry consortium
dominated by large corporations, a Free Software hacker might fear that
using Java will consign them to either having to compromise their
principles by using non-free class libraries (for example), or being doomed
to chase the taillights of standards that could conceivably be tailored to
disadvantage competitors. (Java is not alone in this respect; many people
fear that Microsoft's .NET, despite being openly standardized through
ISO/IEC, will in actuality be completely controlled by Microsoft.)
Despite this peril, Java is attractive to GNU/Linux-using organizations.
The Free Standards Group,
developers of the Linux Standard
Base, has received inquiries about a Free Java standard and
implementation from organizations already committed to GNU/Linux. In my
job, I've encountered an interest in Java from several customers and
prospects. Intriguingly, these institutions are, by and large, very much
aware of the Java Trap. They like the language, and are not strong
advocates of Free Software, but they too are worried about vendor lock-in.
They've seen the success of community-driven development as GNU/Linux moves
from strength to strength, claiming territory formerly held by Microsoft
and proprietary versions of Unix. Even if I can't persuade a customer to
adopt a Free Java stack, I can exhort them to only code against Java
standards that have seen a free implementation. That way, their
development bets are hedged against any "madman theory" of the controlling
vendor. Furthermore, this way they only code to standards that are seeing
independent implementations, and they leave their engineers free to switch
between varieties of development kit. Engineers like flexibility because
it enables them to work more efficiently; sales people, marketing
personnel, and strategists like efficient engineers because they make a
firm more nimble.
That's where the GNU Classpath and Debian Java DevJam comes in. Free Software Java enthusiasts want
to see their implementations fully mature, and are working hard to make it
so. The Free Software community has the opportunity to make its Java
implementation not just an available alternative, but a
compelling alternative to the proprietary ones on technical as
well as licensing grounds. The recent release
of GNU Classpath 0.18 shows just how vigorously this opportunity is
being seized. Having mature software is only half the battle, however;
that software has to be coherently put together and easy for the user and
developer to manipulate. For many of these folks, it's not enough just to
have good, Free Java virtual machines (like Kaffe and SableVM), class libraries (GNU Classpath), compilers
and interpreters (gcj and gij, respectively, from
the GNU Compiler Collection), and
application servers (Jakarta
Tomcat, JBoss, and JOnAS, among others). They also
want these technologies to be mutually integrated and easy to install and
use. Good software and good packaging complement each other to drive
adoption of the technology, and that's what the DevJam is all about. I'm
glad to see that representatives of Debian's Java packaging team will be
joining not just upstream authors, but their counterparts at Fedora,
Ubuntu, and Gentoo in furtherance of this goal.
I've approved a budget of EUR 2000, which Petter Reinholdtsen will
administrate, to support the expenses of Debian's participation in the
DevJam. We've received 1500 USD in sponsorship of this event from a
corporate sponsor that chooses to remain anonymous.
The other mini-conference I'll be attending is the Debian Security
Summit. We're bringing together the heads of our Stable Security and
Testing Security teams — the two Joeys, Joey Schulze and Joey Hess,
as well as a bevy of other security-minded people, with the goal of
revitalizing and streamlining our security processes. Several members of
the Stable Security Team have gone dormant over the past several months (or
longer), leaving an increasingly small number people to handle, as of
Sarge's release, not one but two stable releases. This is because
we do not terminate security support for our previous stable release (in
this case, Woody), until some time has passed.
We've had other challenges on the security front. We had what amounted
to a security support hiatus for about three weeks in June, which caused
much consternation. More recently, klecker.debian.org, which
provides the security.debian.org has suffered some occasional
availability problems, and it hasn't always been clear what's caused
them. It's my understanding that we have new hardware in place that can
serve in a backup, supplemental, or failover capacity.
The general feeling at DebConf 5 was that our security apparatus was in
need of attention to make sure it keep pace with the demands being placed
on it. I've been in fruitful contact with Joey Schulze, Steve Kemp, and
others over the past several weeks, and I look forward to a productive few
days.
/etc/udev/rules.d/smart_card.rules:With this tiny fix chipcardd2 correctly opens the card as a non-privileged user. My thanks also go to Thomas Viehmann, who provides an HBCI branch of Gnucash on Alioth. Apart from the application crashing a bit too often, the HBCI part works fine with my card and PIN. The only problem left is the sudden disconnect of the reader when it's not used for a few minutes. Only a restart of chipcardd2 and gnucash resolves the problem temporarily. All my homebanking activities are now properly signed, and the retrieval of transactions works just fine. To credit my bank a bit, I am a customer of 1822direkt, a subsidiary of the Frankfurter Sparkasse, since a few weeks. They provided me with a free checking account, together with a free(!) HBCI card. Transactions are mailed just-in-time (checked for hourly during working hours) PGP-encrypted. (Yes, they are running PGP5i on OS/2. I needed to create a RSA key using PHP5i/Unix without a passphrase. The public key output of PGP5i had to be sent to the bank, and after an import of the resulting public and private key into my GPG instance I was able to read the statements correctly. The mail interface did not cope with GPG-generated keys.)
BUS=="usb", SYSFS idVendor =="04e6", SYSFS idProduct =="5116", GROUP="chipcard", MODE="0664"
sysvinit. It separates jobs into different “run levels” and can either run a job when particular run levels are entered (e.g. /etc/init.d/rc 2) or continually during a particular run level (e.g. /sbin/getty).
The /etc/init.d/rc script is also based on the System V one (and is in the sysv-rc package), it simply executes the stop then start scripts found in /etc/rcN.d (where N is the run level) in numerical order.
Why change it?
Running a fixed set of scripts, one after the other, in a particular order has served us reasonably well until now. However as Linux has got better and better at dealing with modern computing (arguably Linux’s removable device support is better than Windows’ now) this approach has begun to have problems.
The old approach works as long as you can guarantee when in the boot sequence things are available, so you can place your init script after that point and know that it will work. Typical ordering requirements are:
/etc/fstab./etc/fstab may require tools in /usr which is a network filesystem that cannot be mounted until after networking has been brought up.
The two states shown in red (“waiting” and “running”) are rest states, normally we expect the job to remain in these states until an event comes in, at which point we need to take actual to get the job into the next state.
The other states are temporary states; these allow a job to run shell script to prepare for the job itself to be run (“starting”) and clean up afterwards (“stopping”). For services that should be respawned if they terminate before an event that stops them is received, they may run shell script before the process is started again (“respawning”).
Jobs leave a state because the process associated with them terminates (or gets killed) and move to the next appropriate state, following the green arrow if the job is to be started or the red arrow if it is to be stopped. When a script returns a non-zero exit status, or is killed, the job will always be stoped. When the main process terminates and the job should not be respawned, the job will also always be stopped.
As already covered, events generated by the init daemon or received from other processes cause jobs to be started or stopped; also manual requests to start or stop a job may be received.
The communication between the init daemon and other processes is bi-directional, so the status of jobs may be queries and even changes of state to all jobs be received.
How does it differ from launchd?
launchd is the replacement init system used in MacOS X developed as an “Open Source” project by Apple. For much of its life so far, the licence has actually been entirely non-free and thus it has only become recently interesting with the licence change.
Much of the goal of both systems appears initially to be the same; they both start jobs based on system events, however the launchd system severly limits the events to only the following:
/etc/fstab) is available and writable.
The launchd model expects the job to “sit and wait” if it is unable to start, rather than provide a mechanism for the job to only be started when it doesn’t need to wait. Jobs that need /usr to be mounted would need to spin in a loop waiting for /usr to be available before continuing (or use a file in a tmpfs to indicate it’s available, and use that modification as the event).
This is not especially surprising given that Apple have a high degree of control over both their hardware and the actual underlying operating system; they don’t need to deal with the wide array of different configurations that we have in the Linux world.
Had the licence been sufficiently free at the point we began development of our own system, we would probably have extended launchd rather than implement our own. At the point Apple changed the licence, our own system was already more suitable for our purposes.
How does it differ from initng?
Initng by Jimmy Wennlund is another replacement init daemon intended to replace the sysvinit system used by Linux. It is a dependency-based system, where upstart is an event-based system.
The notion of a dependency-based system is interesting to talk about at this point. Jobs declare dependencies on other jobs that need to happen before the job itself can be started. Starting the job causes its dependencies to be started first, and their dependencies, and so on. When jobs are stopped, if running jobs have no dependencies, they themselves can be stopped.
It’s a neat solution to the problem of ordering a fixed boot sequence and the problem of keeping the number of running processes to a minimum needed.
However this means that you need to have goals in mind when you boot the system, you need to have decided that you want gdm to be started in order for it, and its dependencies, to be started. Initng uses run levels to ensure this happens, where a run level is a list of goal jobs that should be running in that run level.
It’s also not clear how the dependencies interact with the different types of job, a dependency on Apache would need the daemon to be running where a dependency on “checkroot” would need the script to have finished running. Upstart handles this by using different events (“apache running” vs. “checkroot stopping”).
Again while interesting, Initng does not solve the problems that we wanted to solve. It can reorder a fixed set of jobs, but cannot dynamically determine the set of jobs needed for that particular boot.
A typical example would be that if the only dependency on the job that configures networking is the mount network filesystems job, then should that job fail or notbe a goal (e.g. because there are no network filesystems to be mounted) the result is that network devices themselves will not be configured. You could make everything a goal, and just use the dependencies to determine the order, however this is less efficient than just ordering the existing sysv-rc scripts (which/usr or may just be a dependency of anything allowing the user to login if it just mounts /home.
The difference in model can be summed up as “initng starts with a list of goals and works out how to get there, upstart starts with nothing and finds out where it gets to.”
How does it differ from Solaris SMF?
SMF is another approach to replacing init developed by Sun for the Solaris operating system. Like initng it’s a dependency-based system, so see above for the differences between those systems and upstart.
SMF’s main focus is serive management; making sure that once services are running, they stay running, and allowing the system administrator to query and modify the states of jobs on the system.
Upstart provides the same set of functionality in this regard, services are respawned when they fail and system administrators can at any time query the state of running services and adjust the state to their liking.
Will it replace cron, inetd, etc?
The goal of upstart is to replace those daemons, so that there is only one place (/etc/event.d) where system administrators need to configure when and how jobs should be run.
In fact, the goal is that upstart should also replace the “run event scripts” functionality of any daemon on the system. Daemons such as acpid, apmd and Network Manager would send events to init instead of running scripts themselves with their own perculiar configuration and semantics.
A system administrator who only wanted a particular daemon to be run while the computer was on AC power would simply need to edit /etc/event.d/daemon and change “on startup” to “on ac power”.
What about compatibility?
There’s a lot of systems administrators out there who have learned how Linux works already and will not want to learn again immediately, there’s also a large number of books that cover the existing software and won’t cover upstart for at least a couple of years.
For this reason, compatibility is very important. upstart will continue to run the existing scripts for the forseeable future so that packages will not need to be updated until the author wants.
Compatibility command-line tools that behave like their existing equivalents will also be implemented, a system administrator would never need to know that crontab -e is actually changing upstart jobs.
Does it use D-BUS?
“To D-BUS people, every problem seems like a D-BUS problem.”The UNIX philosophy is that something should do just one job, and do it very well. upstart’s one job is starting, supervising and stopping other jobs; D-BUS’s one job is passing messages between other jobs. D-BUS does provide a mechanism for services to be activated when the first message is sent to them, thereby starting other jobs. Some people have taken this idea and extended it to suggest that all a replacement init system need do is register jobs with D-BUS and turn booting into a simple matter of message parsing. This seems wrong to me, D-BUS would need to be extended to supervise these services, provide means for them to be restarted and stopped; as well as deal with being process #1 which means cleaning up after children whose parent’s have died, etc. It seems far simpler to arrange for D-BUS to send an event to init when it needs a service to be started, and focus on being a very good message passing system. The IPC mechanism used by upstart is not currently D-BUS because of various problems, however it’s always been expected that even if init itself doesn’t communicate with D-BUS directly, there would be a D-BUS proxy that would ensure messages about all init jobs and events would be given to D-BUS and D-BUS clients could send messages to init to query and change the state of jobs. What is the implementation plan? Because this is process #1 we are changing, we want to make sure that we get it right. Therefore instead of releasing a fully-featured daemon and configuration to the world, we’re developing it in the following stages:
—Erik Troan
/sbin/init while running the existing sysv-rc scripts. This is the shake-down test of the daemon, can it perform the same job as the existing sysvinit daemon without any regressions?/etc/rcS.d scripts replaced by upstart jobs. These consitute the majority of tasks for booting the system into at least single-user mode, and contain many of the current ordering problems and race conditions. If the daemon solves the problems here, it will be a success.upstart package for testing before it becomes the init daemon.
We welcome any experienced users who want to help test this; install the package and follow the instructions in /usr/share/doc/upstart/README.Debian to add a boot option that will use upstart instead of init. If your system boots and shut downs normally (other than a slightly more verbose boot without usplash running) then it is working correctly.
Other types of events will be added as required during development and testing. Currently only a basic client tool (initctl) has been written, compatibility tools such as shutdown will be written over the next week or two before it replaces our sysvinit package.
Traceback (most recent call last):
File "/usr/bin/reportbug", line 1731, in ?
main()
File "/usr/bin/reportbug", line 1471, in main
listcc += ui.get_multiline('Enter any additional addresses this report should be sent to; press ENTER after each address.')
TypeError: argument to += must be iterable
Oh, and I actually doubt that ATI would give away much secrets if it would allow distributing the existing opensource X drivers. It's not as if the specs of their CPU would be a huge surprise to Nvidia. Some actually say nvidia builds the better graphics cards. And Intel does even give away source code. We're not talking about chip design here, or driver optimizations. Just the plain registers and ports.
--- reportbug_ui_text.py.broken 2006-08-11 14:43:01.000000000 +0200
+++ reportbug_ui_text.py 2006-08-11 14:43:28.000000000 +0200
@@ -223,6 +223,7 @@
break
list.append(entry)
ewrite('\n')
+ return list
def get_password(prompt=None):
return getpass.getpass(prompt)
Pipe it into cd /usr/share/reportbug; patch. Well, I hate my blog, I does not display heredocs correctly, otherwise that would have been a copy'n'paste receipt. Though I don't know if the patch fixes all the bugs introduced.
Next.