Search Results: "will"

29 August 2006

Phil Hands: GeekSki 2007

As I mentioned to some of the folks at Steve's Barbie, we're currently starting the planning for next season's geekski. (oh and thanks Steve, the barbie was better than ever :-) Geekski is an annual holiday, which (so far) always goes to Tux (well, given the name, we have to really). We're just in the throws of organising next year's trip, so if you're interested, please feel free to subscribe to the mailing list Despite the name, Geekski is more focused on skiing (and boarding) than geeking, so while people do occasionally get laptops out, more time in the evenings is spent socialising than hacking. Also, people of all standards turn up, so it's fine if you've never skied before. If there is a taste that's not really catered to, it's off-piste powder hounds, since the main resort is at glacier level, so going off-piste runs a heavy risk of ending up in a crevasse. On the other hand, being on a glacier does guarantee something to ski on, whatever the state of global warming this year, and we have had thigh deep powder on the pistes on occasion. We're currently settling on a date (3rd-10/11th March seems likely) and will be booking places in the next 2-3 weeks, so get on the list, and get organised now if you want to come along next year.

Aigars Mahinovs: Die C

I am not a good coder. In my mind a coder is determined by how much he loves C (or, in clinical cases, assembler). I hate C and avoid it whenever I can, because I am always off-by-one, and often even in more then one place, which make debugging even more .. fun. :( Currently I am coding an application that is centred around use of artificial neural networks (more precisely a multilayer perceptron). The NN part must be done in C for speed and memory usage (imagine adding and multiplying hundreds of millions of floating values just for one operation .. and having to do that for 10 000 times for training .. while holding the whole data set in RAM, because you access every single value of it every second). With that in mind I engineered my system in such a way that the C part can be reduced to a couple simple operations that I can adapt from examples of the NN library. And still I barely wrote those pieces. Working with MySQL in C is pure pain, for example. The rest of the system is in Python and I must say that Python is a godsend by itself, without even comparing it to C. I am now so used to Python when I was debugging my C program, I automatically wrote a chunk of Python into it and was very surprised when it did not work. With that in mind, to ease the pain for further generations of neural network researchers, I will (someday) find some time and write Python wrappers for the nice and cool Lightweight Neural Network C library that I am currently using here. BTW: I found that SourceForge is packed full with great software projects, but it is very hard to find those projects in Google. Morale - seeking for good free software? wajig (or apt-get) it! then sourceforge it! then freshmeat it! and only then google it.

Rodrigo Gallardo: hello-world.deb

Hi there! Ever since I learned about free sotfware, I’ve always intended to give something back to the projects I’m benefitting from. But I had always allowed something or other to get between me and my good intentions. And then DebConf came to us. And I just so loved the people there and the way they work and play together that I finally got over my excuses and got working. And so, this place is born. I intend to leave here a trace of how I’ll get to be a real free software advocate, developer and community member. I don’t expect this to be a nice path. There’s much to learn, much to do, much to overcome. Outside and (most importantly) inside myself. Hence the name of the place. This is my bleeding edge. The one with the bruises and scars. I will dig in. See you on the other side.

BTW. I want to thank Gunnar for inviting me to the planet. I’ll do my best to stop whining.

Steve McIntyre: Sorry to see you go

Matthew, I'm very sorry to see you leaving Debian. You have been one of the most valuable and technically capable developers in Debian in the last few years. I won't ask you to reconsider your decision to leave us - I know you will have already spent a long time thinking about it to start with. Instead, I genuinely wish you the best of luck in the future, and I hope that Ubuntu and other work will make you happier than Debian has recently. /me raises a glass; cheers, dude...

28 August 2006

Matthew Garrett

I resigned from Debian today.

It wasn't actually any one thing. But over the past few weeks (months? Years?) it's become clear to me that Debian doesn't really seem to know who or what it's for. Arguments erupt over whether something is a deeply held principle or an accident of phrasing on the website; whether we should release more often or less often; whether free software is more important than our users having functional hardware. And, depressingly, these debates generally seem to turn into pedantic point scoring and insults and yes, I'm probably as guilty as many others in this respect. But it's got to the point where social interaction with Debian-the-distribution makes me want to stab people, even though I've just spent a lovely weekend with Debian-the-people. Perhaps worse, I occasionally find mails I've sent that make me want to stab me.

So it's got to the point where I find myself reading things written by people I respect, and deciding that I'd be generally happier if I didn't read them. I could just unsubscribe from all the mailing lists, except that part of the fun of being involved in Debian was being part of a community. I don't want my only form of communication with the rest of the project to be limited to bug reports, especially when I find the development IRC channels as bad as the mailing lists.

It's interesting to compare Debian to Ubuntu in this respect, though the different ages of the projects make it difficult to draw any firm conclusions. The fairly rigidly enforced Ubuntu code of conduct probably helps a great deal in ensuring that discussions mostly remain technical. The distinction between core-dev and MOTU is a pretty explicit acknowledgment that not all developers are equal and some are possibly more worth listening to than others. And, at the end of the day, having one person who can make arbitrary decisions and whose word is effectively law probably helps in many cases.

There's a balance to be struck between organisational freedom and organisational effectiveness. I'm not convinced that Debian has that balance right as far as forming a working community goes. In that respect, Ubuntu's an experiment - does a more rigid structure and a greater willingness to enforce certain social standards result in a more workable community? In a few years, we ought to have an answer. I look forward to finding out.

Alexander Schmehl: Note to myself:

When moving packages from one package to an other, take special care for proper Replaces: and Conflicts: lines. Oh... and when finally testing the upgrades, don't waste your time testing it with plain dpkg on the command line. It will fail. You'll need to test it with apt-get or aptitude directly.

Simon Richter: T-Online sucks, again.

Our server has not been reachable from inside T-Online today. The reason is that they seem to inflate TTL on DNS entries to reduce load on their servers. This field is there for a reason. People might decide to tune it when they expect changes, for example when moving services to another machine, like I did today. And will do again next week for some of the domains, as this is only a temporary home (in fact, it is a dd'ed image from the old machine running as a Xen instance on a spare IP now, to make the migration easier.

Erich Schubert: Ajax is devolution

Ajax isn't progress, it's actually a step back. Most people have been happy to actually use some sane advanced language for doing web sites. There is Java, JSP, PHP, Ruby, Python, Perl, ... And then there is Ajax. One of the main components is JavaScript. That language most of us would have loved to forget. Forever. Ajax brings you back into the dark ages of internet development, with browser incompatibilities, it features memory leaks, and many Ajax apps (such as live.com) will run unbearably slow on older computers. Such as my 1.8 GHz P4M laptop. If they work at all - live.com just shows "Loading..." for me right now. Have you ever looked at some of the actual Ajax code? This isn't the future, this is the dark ages coming back! [MJ Ray replies that I didn't mention accessibility issues with Ajax. That's true; I'm aware of them, but this post focuses on Ajax doing away with all the advances in programming languages and software engineering... The in-accessibility of Ajax stuff is worth an own blog post sometime]

Wouter Verhelst: Trains...

I had booked this trip to Cambridge and back well beforehand. According to my intinerary, I should've been able to get a train from Cambridge to London King's Cross at 17:28. Unfortunately, today London King's Cross is closed because of 'engineering', a eufemism for we need to work on a few things without knowing what the fuck we're doing. I had known that they were going to be closed today, since it was announced yesterday. However, I had (incorrectly) assumed that the train which was assumed to go to King's Cross would go part of the way and that I could take the underground from there, or that at least the train would be diverted to another station. Apparently I was wrong; instead of helping me out, they simply cancelled it. So now I had to figure out another way of making it to King's Cross. While I was considering forking out an insane amount of money to a cab from London Stansted (at least there was a train that could get me there from Cambridge), Cambridge Station staff suggested me that I could make it to Tottenham Hale from Stansted using a connecting train with Liverpool Street as its final destination, which would get me right next to an underground station. A ticket from there to London Waterloo, where the Eurostar leaves, will cost me slightly more than one from London King's cross, but at least I'll still be on time -- and I won't have to pay a cab. Lessons learned: next time, ask right away when you see something about engineering that might interfere with your travel schedule, so that you can actually get there in time without issues, and without unnecessary stress... ...and the fact that engineering in the UK is not done sensibly, as opposed to Belgium; this type of insane work should be done during night hours, when no trains have to be routed to that station anyway.

Axel Beckert: Goodbye Woody, Welcome Sarge (Penultimate Part)

Since security support for Woody ceased recently, and with Kazehakase I’ve found a reasonable successor in Sarge for Galeon 1.2.x, I’ve dist-upgraded my 10 years old Pentium I ThinkPad bijou to Sarge this weekend. Even the XFree86 4, which made so much hassles in Woody by not regcognising nor configuring the graphics card correctly, worked fine from scratch. Well, at least after installing xfonts-base and xfonts-75dpi — the -transcoded versions somehow gave only the error message “default font ‘fixed’ not found”. So goodbye Galeon, goodbye GNU Emacs 20, goodbye XFree86 3.3. I hope, I won’t miss you. Only my desktop gsa at home still runs Woody, but will be dist-upgraded soon, too. What though still stayed on my laptop from Woody is Siag Office, since there is no adequate replacement for such a nice office suite with such a low resource footprint. But it has also an impact on the talks I hold. I held all talks with a patched version of lynx (e.g. with LSS support) as presentation tool on that laptop because initially I didn’t get X running on that box. What started as a makeshift became my hallmark… But I didn’t manage to get Sarge’s lynx patched so that it gives me the same output as my old version did. So either I would have to reoptimise the layout of my talks for a new lynx version or just start with something new. Madduck recently showed me python-docutils, which he uses for presentations. Maybe I’ll use that although I have a severe aversion against Python. So it may also be that I’ll stick with WML, but get some new ideas from python-docutils how to use HTML for presentations. Update: Found out that the interesting part of his presentation technic wasn’t python-docutils but S5: A Simple Standards-Based Slide Show System which in entirely written in XHTML, CSS and JavaScript. S5 is really cool stuff, one of the first cases of useful use of JavaScript, and will surely be used for my next presentation — with Debian Sarge and Kazehakase on a Pentium I ThinkPad. ;-)

John Goerzen: Renovation: Weeks 8-9

We've been very busy lately, so I'm a bit behind on renovation updates.

I've posted the photos for weeks 8 and 9. The new kitchen is starting to take shape!

We're also going to get a nice heating/air system. My great uncle, who is doing that work for us, came up with a 3-zone system. We'll have one furnace & AC, but three temperature sensors. There will be motorized dampers in the ducts that are controlled by that system, so we can direct hot or cold air only where it needs to be. We'll break even on it now because we can make do with a smaller AC and furnace, and will save money over the long run due to lower utility bills.

We also learned that the wood floors in pretty much the entire house can be saved, so that'll be nice, too.

Here's a sample:



Click here for the rest.

27 August 2006

Uwe Hermann: Testing stuff with QEMU - Part 1: SELinux support in Debian unstable [Update]

Here's a quick HOWTO to get you started with the QEMU emulator, the Debian installer (etch beta 3), and SELinux. If you execute the following steps you'll be left with an SELinux-enabled Debian unstable QEMU image, but not with a complete working and perfectly configured SELinux system. A more detailed article about SELinux will probably follow... Basic Debian unstable install in QEMU:
  1. Install QEMU:
    apt-get install qemu
  2. Download the latest Debian etch installer ISO image (etch beta 3, currently):
    wget http://cdimage.debian.org/cdimage/etch_di_beta3/i386/iso-cd/debian-testing-i386-binary-1.iso
  3. Create a QEMU image which will hold the Debian installation:
    qemu-img create -f qcow /path/to/debian.img 5000M
  4. Boot directly from the ISO image and install Debian into the QEMU image (I won't go into the details of the installation itself; Wolfang Lonien has nice HOWTOs for that: part 1, part 2, video):
    qemu -hda /path/to/debian.img -boot d -cdrom debian-testing-i386-binary-1.iso
  5. After the installation is done, configure the system, tweak /etc/apt/sources.list if needed, and then dist-upgrade to the latest stuff:
    apt-get update && apt-get dist-upgrade
  6. That's about it for the basic Debian install, you can now shutdown the OS and QEMU (type "halt" in the emulated Debian, wait for the shutdown to complete, press CTRL+ALT+2 to switch to the QEMU console, and type "quit").
Creating a QEMU overlay image: QEMU has a nice feature called overlay images which allows you to "clone" an image, where the new (overlay) image will only store the "diffs" to the original one, thus saving lots of space. This also allows you to remove the overlay image at any time and restart from the original image (which is nice for testing stuff which may break).
  1. Create an overlay image based on the previously installed Debian image:
    qemu-img create -b /path/to/debian.img -f qcow /path/to/debian_selinux_overlay.img
  2. Now boot into the new overlay image:
    qemu -hda /path/to/debian_selinux_overlay.img
Basic SELinux setup: SELinux / sestatus screenshot
  1. SELinux wants to label all the files on your system (all inodes actually), so your filesystem(s) need the so-called extended attributes (xattr) and "security labels" (both are kernel options) which most modern file systems now support. For ext3 (for example) you need these config options:
    CONFIG_EXT3_FS=y
    CONFIG_EXT3_FS_XATTR=y
    CONFIG_EXT3_FS_SECURITY=y
    Luckily the Debian kernels are xattr-enabled by default so we don't have to do anything at all here.
  2. Install the basic SELinux packages and the source package of the SELinux reference policy:
    apt-get install checkpolicy policycoreutils selinux-policy-refpolicy-src
  3. I noticed a bug in the current Debian packages (the setfiles utility is in the wrong place, see #384850), but there's a simple workaround:
    ln -s /sbin/setfiles /usr/sbin/setfiles
  4. Now we can (re-)label the file system:
    cd /etc/selinux/refpolicy/src/policy
    make relabel
    This will build the reference policy from source and relabel your file system (this will take a while).
    There might be some warnings (and maybe you'll notice further bugs), but they seem not to be critical.
  5. We can now (almost) enable SELinux, but before we can reboot we need to work around another bug (#384852), otherwise SELinux will not be enabled when we reboot:
    ln -s /etc/selinux/refpolicy/src /etc/selinux/targeted
  6. Now reboot the emulated Debian system, and at the GRUB console add the kernel option selinux=1 to enable SELinux in the kernel (press "e" to edit the boot options).
  7. You'll get tons of SELinux log messages while the system boots, that's normal at this point, don't worry.
    Then you can type "sestatus", which should print some information on the running SELinux system. If it says "SELinux status: disabled" something went wrong.
Congratulations! You now have a QEMU image with minimal SELinux support and you can start playing with it, tweaking the policy, finding and reporting bugs, reading tons of documentation on how SELinux actually works etc. etc. As SELinux is (half?) a release-goal for Debian etch, it would be nice if many people could test it before the release, and this is one method to do so without breaking your production systems. Update: You don't really need user_xattr support for SELinux, only xattr support (for security.selinux xattrs) for the filesystem you use, which is available per default in Debian kernels (thanks Russell Coker).

Wouter Verhelst: Weekend

This blogpost brought to you by the use of Steve's electricity, network connection, and couch. And hospitality, of course. For some reason, I appear to have lost my voice again. I don't know why it is that every time I meet Debian people during a weekend, I lose my voice, but this appears to be what's happening; I lost my voice during the last two FOSDEMs, and again this weekend. Oh well. We had a nice little barbecue last night, with lots and lots of Debian-UK people attending. And some non-UK people, too. Met some people that I hadn't seen since Helsinki and some others that had been at FOSDEM. Plus, obviously, some new faces. Only need to put names to them, now, which I will probably have forgotten by next time I see them. As usual. I was planning on harassing someone into helping me to get my Airport Express to work again, but when I tried it just once to get some useful printk output, it suddenly seemed to work. Strange. Oh well, not as if I care. Watching the F1 race now, let's see what happens after that. Nice start of the race, though, with a spectacular crash of a number of people.

26 August 2006

Steve Kemp: The traffic is waiting outside

A tool suggestion for moreutils: haschanged. haschanged
The intention of haschanged is to test whether a file has changed. It will do this by computing a hash of a file contents and storing that in a file beneath ~/.haschanged. If a new hash differs from the previously stored hash, or there is no recorded hash it will return 1 0. If the new hash and the old hash remain the same then the tool will return 0 1.
The script is trivial, but fairly useful for a lot of things. The only thing that I don’t like is having to store the hash somewhere… (The alternative is to copy the file somewhere, or create “$ file .orig“, and then run diff. The latter doesn’t work for non-root users wanting to monitor a file in /etc.)

Scott James Remnant: Upstart in Universe

upstart is a replacement for the init daemon, the process spawned by the kernel that is responsible for starting, supervising and stopping all other processes on the system. The existing daemon is based on the one found in UNIX System V, and is thus known as 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: This worked ten years ago, why doesn’t it work now? The simple answer is that our computer has become far more flexible: We’ve been able to hack the existing system to make much of this possible, however the result is chock-full of race conditions and bugs. It was time to design a new system that can cope with all of these things without any problems. What we needed was an init system that could dynamically order the start up sequence based on the configuration and hardware found as it went along. Design of upstart upstart is an event-based init daemon; events generated by the system cause jobs to be started and running jobs to be stopped. Events can include things such as: In fact, any process on the system may send events to the init daemon over its control socket (subject to security restrictions, of course) so there is no limit. Each job has a life-cycle which is shown in the graph below: 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: Therefore it does not actually allow us to directly solve the problems we currently have; we couldn’t mount filesystems once the “filesystem checked” event has been recived, we couldn’t check filesystems when the block device is added and we certainly couldn’t start daemons once the complete filesystem (as described by /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
can be done at install time). Another example is that often you simply don’t know whether something is a dependency or not without reading other configuration, for example the mount network filesystems may be a dependency of everything under /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.”
—Erik Troan
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:
  1. Principal development; at the end of this stage the daemon has been implemented and can manage jobs as described.
  2. Replacement of /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?
  3. /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.
  4. Other daemon’s scripts replaced by upstart jobs on a package-by-package basis; this will be an ongoing effort during which upstart will continue running the existing sysv-rc scripts as well as its own jobs. During this time the event system may be tweaked to ensure it truly solves the problems we need.
  5. Replcement of cron, atd, anacron and inetd. This will happen alongside the above and result in a single place to configure system jobs.
  6. Modification of other daemons and processes to send events to init instead of trying to run things themselves.
The current plan is that we will be at least part of the way into stage #3 by the time edgy is released, with that release shipping with upstart as the init daemon and the most critical rcS scripts being run by it to correct the major problems For edgy+1 we hope to have completed stage #5 and be at least part of the way into the implementation of stage #6. From the start of development of edgy+2, no new packages will be accepted unless they provide upstart jobs instead of init scripts and init scripts will be considered deprecated. What state is it in now? The init daemon has been written and is able to manage jobs as described above, receiving events on the control socket to start and stop them. This has now been uploaded to the Ubuntu universe component in the 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.

Bastian Blank: New machine to play with

Some people already know it, I got a new machine to play with. It is a Sparc running Debian etch:
# uname -a
Linux zee 2.6.17-2-vserver-sparc64 #1 SMP Sat Aug 26 12:28:58 UTC 2006 sparc64 GNU/Linux
The kernel is not yet available in Debian, it is handbuilt. But I hope that this will change soon. It is a small machine with some CPUs:
# grep ncpus /proc/cpuinfo
ncpus probed    : 32
ncpus active    : 32
It only have a little bit of RAM:
# grep MemTotal /proc/meminfo 
MemTotal:     33257432 kB
And really too less disk space:
SCSI device sda: 143374738 512-byte hdwr sectors (73408 MB)
SCSI device sdb: 143374738 512-byte hdwr sectors (73408 MB)
Yes, it is a T2000 from Sun with 8 real CPU cores:
cpu             : UltraSparc T1 (Niagara)
fpu             : UltraSparc T1 integrated FPU
prom            : OBP 4.19.0 2005/10/27 17:24
type            : sun4v
Each of the 8 cores can run 4 threads at the same time, Sun calls this CoolThreads, and Linux sees this as virtual CPUs.

Jeff Bailey: When I breathe in...

Wow, haven't had time to post in a while. Some major highlights over the past couple of weeks:

(longish entry, hidding behind an lj-cut to avoid flooding various aggregators...)



Opus and ConCentric

Angie and I went to Opus and ConCentric. For those not familiar, it's an annual UU Young Adult (18-35yr olds) campout and spritual retreat. When we're there, we do activities, workshops, worship, cook, clean, sit around the fire, swim, talk, laugh, cry, and all the things that come when you throw people together in a space for 10 days. Every time that I go, I both miss it and am glad when I leave. Over the course of the year, I start to think about only the good parts and when I go back. But when I'm there, there's tempers, hurt feelings, things go wrong. At the same time, when I'm there, I meet some of the people I'll connect with the strongest over the course of the year. Sometimes just a feeling or a song from the camp will help me reconnect and push through in the year in between.

This Opus in particular was interesting. I'd been away for two years, after having been on the planning committee for two years. There were things I loved: There were new people, new songs, new games. I learned to crochet, swam naked under the stars, reconnected with many old and new friends. This particular camp in Maryland is the one at which I proposed to Angie in 2000. There were things that sucked: The cooking staff had trouble getting food out for the first few days, which resulted in one of them quitting; a few hospital visits for people onsite stressed my friend who was the first aid attendant. Fortunately, Angie and I have worked in camp kitchens before, and she was able to step in and fill that roll. A ...

I need a collective for a group of people that doesn't sound like 90's corporate psychobabble. 'team's are things that compete. Maybe I'll steal the word from the current Ubuntu release.

... knot of 4 of us are applying to be kitchen staff next year. I have to be careful what I commit to this year, since in general all commitments I'm making to people officially expire in February. I can't tell what life will be like on the other side of having a child!

It's also hard going to a camp where we've been before, I think. My memories of that camp are mostly centred around people who weren't there. One of whom is dead, many have aged out, many just didn't come this time. I miss all of you.

For the drive down, Angie and I rented a Smart Car from Avis. (Photo by Simon Law) Driving down to Maryland was fun. These things aren't for sale in the US until 2008, and there were many pictures of us taken on the drive and at gas stations. At least a dozen SUV drivers walked over to us to ask the mileage. It sustains 120km/h with no problems and doesn't get blown around too much on the highway. A few times I took it up to 130km/h, but at that point it starts to blow around alot. It *is* tiny, though. Packing enough for Angie and me to travel for 10 days was a bit tight, and driving a Yarris when I got back felt *huge*. On the way down, including Angie going to work once, and us taking a detour, the Diesel cost us $35, and the tolls cost us $40.

We did the drive down in two days. The first day making sure that we crossed the border and getting from Montr al to Albany. On the drive down on the second day, we didn't want to hit the NJ Turnpike at 5pm on a Friday, so we stopped for lunch at a place called Eduardo's Pizza in Boonton, NJ. They had some of the best pizza we've ever had, and the nicest staff. They gave us directions to a waterpark nearby which had a neat ride called High Anxiety (Picture 2 Picture 3). I prefered to call it Funnel of Doom. The park was overpriced for a full day for what you'd get, but the half-day discount prices were worth it and the park was mostly empty because of a state fair.

The drive back was mostly a day of hard driving. Being at camp was wonderful, but we wanted our own *beds*. We got a bit lost coming back, and somehow paid less than $10 in tolls, despite travelling in the same amount of time. I like adventures like that.

So what's next? Re-entry into the world is almost done, but now there's re-entry into the mainstream UU communities. This is the part I find the hardest. Opus is such an idealised world, where we talk about anti-oppression work, changing the world, changing ourselves to help create this new world. The worships are spritually alive (Elandria, YOU ROCK MY WORLD!) and the group doesn't stay long enough for alot of politicking to set in. Our jobs leaving there are always to take a part of that community and recreate it elsewhere. I think it's the toughest job I've ever had.

Go out into the highways and byways. Give the people something of your new vision. You may possess only a small light, but uncover it, let it shine, use it in order to bring more light and understanding to the hearts and minds of men and women. Give them not Hell, but hope and courage. Do not push them deeper into their theological despair, but preach the kindness and everlasting love of God.
- John Murray


For whatever God means to you of course. Blessed be. =)

Russell Coker: the waste of closed lists

As I mentioned in my first post the amount of effort I'm prepared to invest in posting to a small group of people is limited. I don't think that I am the only person with this opinion.<br /><br />I also believe that the number of people who refuse to post to open lists is quite small, and that on many lists they aren't the people who contribute much. I believe that they are outweighed in both number and contributions by the people who want open lists and who are unwilling to spend a large effort on posting to a closed list.<br /><br />When posting to an open list you have to be concerned about your online reputation. Some lists are closed because of having NSFW content that people don't want known by their colleagues and managers, I guess that this makes sense for some lists.<br /><br />IMHO the only good reason for closed lists is for discussion of truly sensitive information. This ranges from security problems in software that have not yet been fixed to medical and psychiatric problems. There are many lists which should not be publicly archived, but for general discussion of computers there is no such motivation.<br /><br />For a list with a primarily technical focus on answering basic questions secrecy does no good, it merely protects people who want to post off-topic messages and create pointless arguments about issues that they don't understand.<br /><br />My solution to some of these problems is to use this blog to comment on such things. I expect that my solution will also be adopted by other people on some of the closed lists that I use.<br /><br />Also it has occurred to me that blogging about issues may improve the quality of list discussion. If instead of responding to a message in point-form you write an article about the general issue then it may reduce the level of personal dispute. I think it would be difficult to have a flame-war by blog.<br /><br />Finally while on the topic I have to mention that I don't believe in anonymous posting to technical forums. Any content that is worth having should come with someone's name attached. IRC nicks etc are OK, but the person writing the content should be identifiable.

Russell Coker: big and cheap USB flash devices

It's often the case with technology that serious changes occur at a particular price or performance point in development. Something has small use until it can be developed to a certain combination of low price and high performance that everyone demands.<br /><br />I believe that USB flash devices are going to be used for many interesting things starting about now. The reason is that 2G flash devices are now on sale for under $100. To be more precise 1G costs $45AU and<br />2G costs $85AU.<br /><br /><a href="http://www.coker.com.au/hardware/usb.html">http://www.coker.com.au/hardware/usb.html</a><br /><a href="http://www.coker.com.au/hardware/usb.html"><span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"></span></a><br />The above page on my web site has some background information on the performance of USB devices and the things that people are trying to do with them (including MS attempting to use them as cache).<br /><br />One thing that has not been done much is to use USB for the main storage of a system. The <a href="http://laptop.media.mit.edu/">OLPC </a>machines have been designed to use only flash for storage as has the <a href="http://familiar.handhelds.org/">Familiar</a> distribution for iPaQ PDAs (and probably several other Linux distributions of which I am not aware). But there are many other machines that could potentially use it. Firewall and router machines would work well. With 2G of storage you could even have a basic install of a workstation!<br /><br />Some of the advantages of Flash for storage are that it uses small amounts of electricity, has no moving parts (can be dropped without damage), and has very low random access times. These are good things for firewalls and similar embedded devices.<br /><br />An independent advantage of USB Flash is that it can be moved between machines with ease. Instead of moving a flash disk with your data files you can move a flash disk with your complete OS and applications!<br /><br />The next thing I would like to do with USB devices is to install systems. Currently a CentOS or Red Hat Enterprise Linux install is just over 2G (I might be able to make a cut-down version that fits on a 2G flash device) and Fedora Core is over 3G. As Flash capacity goes up in powers of two I expect that soon the 4G flash devices will appear on the market and I will be able to do automated installs from Flash. This will be really convenient for my SE Linux hands-on training sessions as I like to have a quick way of re-installing a machine for when a student breaks it badly - I tell the students "play with things, experiment, break things now when no-one cares so that you can avoid breaking things at work".<br /><br />The final thing I would like to see is PCs shipped with the ability to boot from all manner of Flash devices (not just USB). I recently bought myself a new computer and it has a built-in capacity to read four different types of Flash modules for cameras etc. Unfortunately it was one of the few recent machines I've seen that won't boot from USB Flash (the BIOS supported it but it didn't work for unknown reasons). Hopefully the vendors will soon make machines that can boot from CF and other flash formats (the more format choices we have the better the prices will be).

Russell Coker: wasted votes

In a mailing list to which I subscribe there is currently a discussion on US politics with the inevitable discussion of <span style="font-weight: bold;">wasted votes</span>. As I don't want to waste my writing on this topic on a closed list I'm posting to my blog.<br /><br />There is ongoing discussion on the topic of <span style="font-style: italic;">wasted votes</span>. As a matter of principle, if a vote is considered to be wasted, then that should be considered a failure of the electoral system.<br /><br />Having representatives for regions makes some sense in that a regional representative will have more interest in the region than a central government with no attachment to the region. I expect that representatives of regions were initially used because it was not feasible for people to vote for people that weren't geographically local. Now there is no real requirement for geographical locality (only a very small fraction of the voters get to meet the person they are voting for anyway) but having a representative for a region still makes sense.<br /><br />The requirement for a regional representative means that if you live in a region mostly filled with people who disagree with you then your vote won't change much. For example I live in a strong Labor region so the REAL fight for the lower house seat (both state and federal) occurs in the Labor party room.<br /><br />My vote for the senate counts as that is done on a state-wide basis. So of the two votes entered in one election one of them can be considered to not be <span style="font-style: italic;">wasted</span>.<span style="font-weight: bold;"></span><br /><br />For the US system, the electoral college was developed in a time when it was impossible for the majority of voters to assess the presidential candidates, and it solved the requirements of those times reasonably well. Today it is quite easy to add up all the votes and use either a simple majority or the "Australian ballot".<br /><br />Currently there is some controversy over the actions of Senator Joe Lieberman who lost the support of his party and then immediately declared that he would stand as an independent candidate. I believe that this illustrates a failure of the electoral system. It should be possible to have multiple candidates from each party on the list. In the Australian system it is possible to do that, but as they are in random order on the voting cards no-one would be sure of which candidate of the winning party would get the seat unless there were actual reasons for preferring one candidate over another (which sadly often isn't the case). This is good for voters (the minority of voters who care enough about internal party policies to prefer one party candidate over another should make the decision) but not good for the candidates who want a better chance of winning without actually demonstrating that they can represent their voters better than other candidates.<br /><br />The Australian government system has nothing equivalent to the US presidential election. The prime minister is voted in by the members of parliament. So there is little chance of getting multiple candidates from one party contesting one position. For the US presidential election I think that the best thing to do would be to have an "Australian ballot" and permit multiple candidates from each party. For example you could have Bush and Cheney running as candidates for president with each promising to make the other their VP if they get elected. With the Australian ballot it wouldn't matter if you put Bush and Cheney as the last two votes on your ticket, the order you use for them will still matter.<br /><br />I think that with the US presidential and state governor elections there is enough knowledge of the candidates among the voters to make it worth-while for each of the major parties to run multiple candidates.<br /><br />One of many advantages of having multiple candidates is that you might have real debates. If the main candidates from the two big parties have a set of strict rules for their debate that prevents any surprise then the people who are the less likely candidates from those parties (and who therefore have less to lose) could go for a no-holds-barred debate with a selection of random members of the public asking questions.<br /><br />Of course none of this is likely to happen. Any serious change would have the potential to adversely affect at least one of the major parties, and any improvement would necessarily have a negative impact on most of the current politicians. Votes ARE being wasted, and most politicians seem to like it that way.

Next.

Previous.