Search Results: "phil"

6 September 2006

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.

4 September 2006

Branden Robinson: On Leader Reports

Philipp Kern: to put it simply, you're right. I appreciate your frankness, and yours is exactly the kind of feedback I need to do a better job. The primary reason for transitioning DPL reportage from monthly reports to blog entries is because I have found that most things in Debian that require my attention do not unfold neatly on a month-to-month basis. The ongoing attention to stable security updates, for example, began in June, carried forward through DebConf, and brings me to Oldenburg this weekend. Activity tends to be "bursty" instead of steady, which makes sense given that most of us don't have salaried jobs we can dedicate to Debian (I don't, certainly — my day job just has some overlap with my avocation). The emphasis I placed on visibility, demystification of Debian processes, and reform of the ones that don't work well remain my focus. To that end, it seems logical to me that it would only compound a failure to issue monthly reports by withholding information until I do issue one again. I'm trying to keep people informed, and if the information I've been sharing via my blog entries about DPL matters is of little value, then I need to know that — please tell me. 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.

Branden Robinson: Destination: Oldenburg, Mission: Security, Java, and a bit of odd old hardware

On Friday afternoon I'll be arriving in Oldenburg, Germany, for the eleventh annual Linux developers' conference. Historically, this conference has had a strong focus on non-x86 ports of the Linux kernel, boot loader development, the GNU toolchain, and so forth. At long last, it looks like this may be my opportunity to get my Macintosh Quadra 840AV out of mothballs and back into commission, thanks to Wouter Verhelst. I should be able to fit it into my luggage if I don't bring many clothes... :-) 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.

Isaac Jones: How to get involved in Free Software (the bug method)

Are you a software developer? Are you graduating soon? Maybe you should get involved in free software projects! There are any number of reasons people get involved, from altruistic reasons to selfish reasons. Let's approach it from a "selfish" point of view. I assert that involvement in free software projects looks really good on a resume, and is an excellent way to "network". Networking isn't all about schmoozing at job fairs; it's about building a reputation with professionals in your field. There are very few fields where a huge number of professionals are so very accessible. Software developers are very lucky in this sense. Common wisdom seems to indicate that the job market for software developers is very competitive, and it's going to continue to be competitive for a while yet. Any edge you can get over your classmates is going to help. There is plenty of opportunity to contribute, no matter what your skill level. There is documentation to write and there are translations to perform. There are bugs to fix, and packages to create. Of course there are projects that need more "serious" development as well. You don't have to start your own open-source project, and you don't have to learn to hack on the Linux kernel to add something very attractive to your resume. When people ask me how to get involved in free software, I usually recommend that they start out reporting bugs in the open-source software they use frequently. You might install a version of GNU/Linux, or if you want to stick with Windows or MacOS, you should browse around to find out what free software is available. I think you'll be pleasantly surprised. Let's use "Gaim", a multi-protocol IM client, as an example of how this might proceed. Gaim runs on Windows, GNU/Linux variants, and I'd expect MacOS X, and Unix. It's open source and free: http://gaim.sourceforge.net/. Download Gaim and the Gaim source code. Build it for your machine if you want. Notice what language it's written in. Do you know this language? If not, can you understand it (if you know Java, you can probably understand a lot of C, for instance). Try out Gaim, set up your AOL Instant Messenger and your IRC channels. Visit some open source channels. See any problems? Check the bug reports to see if anyone else has seen that problem. If not, report it as a bug (you might want to google for "how to report a bug" first). Now check out the "bug reports" for Gaim. Pick a bug and try to reproduce it. Why are bug reports the first step in improving your resume?
  • Reporting a bug is a half-hour task.
  • Fixing a bug is often (not always) a small, weekend-sized task.
  • Bugs introduce you to the source code on a level where you don't have to understand everything (hopefully).
  • You will build familiarity with debugging tools which are invaluable for a developer.
  • You will start to build a reputation with the authors of the software, and in the free software community.
  • And because developers are always very happy to get bug fixes that they didn't have to work on themselves. Let's take a look at the bug list for Gaim again. Different ways to contribute to fixing a bug:
  • If you can reproduce the bug, you might add more information to the bug report: What steps did take to reproduce it? Is there a unique combination of features you need to be using to cause the bug?
  • If you can't reproduce the bug, maybe it's fixed in the version you're using! Maybe you should add that to the report (better read and understand it very carefully first). Pick another bug, repeat.
  • Depending on your skill level, you might try to fix this bug, or at least isolate where the bug came from. If you manage to fix it, read about the "diff" and "patch" utilities. Send the author a patch, or attach the patch to the bug report. Here is a bug that looks pretty easy, and it doesn't look like the developer is particularly thrilled to spend time on it: "Buddy Pounce does not get removed when user is deleted". I'm going to take a wild stab at how you might fix this bug: most probably, there's a "list" of "pounces" that has a data-structure which contains both the buddy's name, and the pounce action, whatever that is. Find the code where the buddy is deleted from the buddy list (a different list). Add code to search through the "pounces" list to delete that buddy from the pounces list as well. Compile, test, and run diff to create a patch, attach it to the bug report, take a bow. Now add this to your resume. You are now 50% more interesting to me, as someone who reads resumes, than your classmates who have never taken on a project outside of school. You've shown initiative, skill, and maybe even teamwork. Higher levels of commitment If there's a piece of software that you love, that you think is really important, then you might try adding features to that software and joining the development effort. Lots of projects have a page dedicated to information about how to help out. Here is one for the Mozilla project, for instance. If you want to lead a development project, you might adopt one that has been orphaned. Many people recommend against starting your own project off the bat. I've presented you with a method to increase your skill and reputation, and to add something interesting to your resume. Try it out. You might find out why so many software professionals work on free software projects. It's tons of fun! Feel free to send me comments on this document, or to tell me whether this advice has effected you.
  • 31 August 2006

    Joey Hess: metro

    I can't resist this one.. here are the metros I've used:

    From b3co.com
    Not shown: San Jose light rail. Cities I visited but missed the metro: Porto Alegre, Rio, Mexico City, Chicago, LA, Seattle See also: visited countries and states

    Jesus Climent: No place for a MasterCard.

    I have joined the “Once a year visiting London for some shopping” club after my visit there. I found a great small shop for electronic music that has most of the producers I have been purchasing online. I must admit I quite enjoyed the visit. Thanks, Phil. On the other hand, it is the weirdest experience to try to find a place where they would accept MasterCard (my Visa with “chip and pin” was way off over limit) around King’s Cross station. Only M&S accepted it, after showing an ID (and after the girl behind the counter showing some shock once she read Jesus on it).

    30 August 2006

    Philipp Kern: Re: SCR 3310 on Linux

    So finally I got my card reader running on Linux. It was not that hard, but the main problem was caused by the proprietary Linux driver I installed. Thanks to Ludovic Rousseau's Generic CCID driver the reader is able to run just fine with only Free Software. It works even with libchipcard2, but a tiny fix to udev was necessary to fix a permission problem (you might need to adapt the vendor and product id to your local card reader, as shown by lsusb):
    /etc/udev/rules.d/smart_card.rules:
    BUS=="usb", SYSFS idVendor =="04e6", SYSFS idProduct =="5116", GROUP="chipcard", MODE="0664"
    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.)

    29 August 2006

    Jesus Climent: Random thoughts

    Matthew. Thanks for your time, your rants, your technical skills and everything else. Snakes on a plane is fun. It is like the Airplane movies. I visited London. Quickly showing up at the Tower Bridge, the Big Ben, 10 Downing Street and Picadilly Circus. Spending a night at Phil’s and heading back to Cambridge.

    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.

    28 August 2006

    Philipp Kern: Lazyweb: SCR 3310 on Linux?

    Dear Lazyweb, is there any way I could get a SCM SCR 3310 running on Linux with libchipcard2? pcscd seems to start up correctly, but I lack applications to check if chipcard accesses come through properly. But I don't get any successful connection to the chipcard reader with neither the free CCID driver nor the proprietary SCM one.

    26 August 2006

    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.

    24 August 2006

    Phil Hands: In Memoriam

    With the advent of Uncle Steve's Barbie, I was reminded of DebConf, and the fact that I was intending to setup a blog, if for no other reason than so that I could make this post, so here goes: Some of you will be aware that my father died on May 16th this year, which was during Debconf6. Given that I was in Mexico, while the rest of my family were dealing with the fact of his death in the UK, I'd have expected to feel somewhat lonely or isolated. I'd just like to say that, the fact that during the rest of the week people kept coming up to me and offering their sympathies was really amazingly supportive, and is deeply appreciated -- thank you all. Being surrounded by friends and knowing that we were engaged in doing something productive helped offset the loss to some extent. It also helped to know that my father had chosen the optimal time to die, having survived until the moment when his quality of life was about to evaporate, but not beyond. Since so many of you offered your condolences about my father, I thought you might like to have at least a flavour of the man, and anyway I'd like to publish the eulogy written by Steve McCullagh, which he recited at the funeral, because it sums up my father brilliantly. So, thanks to all of you that offered your support, also thanks to the organisers of Debconf6, and thanks very much to Steve McCullagh for his permission to publish the eulogy.

    20 August 2006

    Philipp Kern: Gobby 0.4.0rc4 released

    We just released Gobby 0.4.0rc4 (together with its library dependencies net6 1.3.0rc3 and obby 0.4.0rc4) with the hope that it is one of the last release candidates before the final 0.4 release. Our application tests all went very well, without any further desyncronisation. Please test this release, as we need to weed out any further bugs. From our point of view those packages should be usable for productive working, but your mileage may vary, of course. I will push this branch into Debian unstable as soon as the final release is available, to enter Etch in time. Packages are already in Debian experimental (which, of course, might require that unstable is also available on your system). For i386 only, though. I lack build machines for other architectures, and although experimental is autobuilt nowadays, builds would need to be requeued manually due to the bumped library dependencies. Backports to Sarge are not yet available, do not hesitate to request them if needed, it will be easier to backport them than it is for the 0.3 branch. Sobby is missing, too, as it needs some updates to be made in the course of this week. If you use Ubuntu Dapper, just follow these instructions. Changes from the last set of release candidates:
    For more changes between the 0.3.x and 0.4.x branch please read the NEWS file.

    18 August 2006

    Philipp Kern: The future of (G)obby

    Armin provides a nice outlook into the future of (G)obby, a collaborative editor and the corresponding library to embed this feature into other applications. A C rewrite of the obby library is currently in progress, but it's still quite some time away. We will release the 0.4.0 branch soon, though. There will be another set of release candidates for all components in the next few days, which hopefully pave the way to a final release of that series. It was delayed for a long time due to a desyncronisation issue, which seems to be fixed since 0.4.0rc3. The 0.4.0 branch of Gobby will have the following advantages over the 0.3.0 one (which is in Debian unstable and Ubuntu dapper):

    16 August 2006

    Philipp Kern: Drag'n'drop for Ruby-GTK2

    Uh, yeah. So I "lost" a whole day due to two "signals" missing in the ruby-gtk2 wrapper. Both GtkTreeDragSource's "row-draggable" and GtkTreeDragDest's "row-drop-possible" are implemented as virtual functions, instead of plain signals. This means that a new gobject class needs to be created to properly use those callbacks. Well, Armin Burgmeier and I had a nice long Gobby session (completely over IPv6 by the way, welcome to the bleeding-edge of technology, where no port forwards are required) about this problem. Him being the main developer of Gobby, he knows much about Gtk, so finally we came up with this patch, which adds both functions as signals to the Ruby-Gtk API. It's sad that my program will require a patch to the GUI wrappers in order to run correctly, but this is, as far as I see, the only way to get proper drag'n'drop in Ruby.

    15 August 2006

    Martin F. Krafft: Test-driven development

    Lars, I strongly suggest test-driven development. It seems to preemptively do the most relevant of what the debugging rules you quote instruct you to do later. The principles:
    1. design your interface
    2. write tests that fail
    3. write the code to make the tests stop failing
    4. refactor
    5. lather, rinse, repeat
    It's a philosophy that anticipates bugs and errors, yet it uses that very fact to guard against them. Test-driven development has changed the way I (and many others, I learnt it while becoming a Plone developer) plan, design, think about, and implement code. And yet, it's really not far away from how you're already doing things. Really. For C++ coders, I recommend libtut, which is elegant and non-intrusive. PS: The definitive (and quite good) book on test-driven development by Kent Beck is only 200-something pages, so it's also in the domain of shorter books. Update: sorry, liw, for making it sound like I assumed you had spent the last years in a cocoon or cave or curled up in a corner. I didn't intend to doubt that you know of TDD, just wanted to get that off my mind what your post put there. And of course, I agree with you: TDD will not eliminate debugging. But it will make your debugging sessions a lot less frequent, even though the really long and painful ones are exactly those that it won't prevent...

    12 August 2006

    Daniel Burrows: Dynamic typing strikes again.

    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


    BTW, for anyone who reads my blog and not Planet, this has a simple fix.

    Daniel Burrows: Giving away secrets

    Erich Schubert writes that


    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.


    -- note: what follows is just my opinion and I'm wrong on a regular basis, so take it with a grain of salt --

    The problem here is you aren't thinking like a corporation. As far as I can figure, the corporate view here is that you have two options:

    (a) Keep the secrets you have. This is the status quo, you know how to make money here, and no-one else can benefit from your secrets even if you yourself can't.

    (b) Give away your secrets. This always carries a risk that someone else will find a more clever (=profitable) way to use your secrets than you; thus, companies try to avoid this unless they absolutely have to.


    I personally agree that the risk to ATI appears small. However, just to throw out a hypothetical, giving away their register specs would allow other companies to build cards that are register-compatible with ATI's. (Remember the ne2000?) Obviously this would be good for you and me -- but it's almost certain to drive down ATI's profits at least a little by providing more direct competition in the market for graphics cards; thus it's not good for ATI. This may be a far-fetched or overblown concern, but ATI will need a reason to "go uphill" against it when their current strategy seems to be doing just fine.

    Intel, on the other hand, is in a different situation; as far as I know, they generally are playing catchup in the graphics area to NVIDIA and ATI, and as a result, they have more to gain and less to lose by opening their specs. [UPDATE] And as I mentioned in my previous post on this topic, the types of cards Intel sells are probably more interesting to free software users than the cards ATI sells. (I'm sorry you don't have any Intel cards -- they seem to have come automatically with most of the new computers I've seen lately, so I assumed it was a trend!)

    11 August 2006

    Philipp Kern: Broken reportbug

    People are going crazy when reportbug is broken, not able to report new bugs. Well, now I know how we could release etch in time... Here is the fix:
    --- 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.

    9 August 2006

    Zak B. Elep: Achieving Arete

    Today I installed Ubuntu Dapper on the old Pentium 4 machine at St John the Baptist Parish. This machine used to be eliza, where I did some Linux-2.6 on Debian Woody baking. But, since this was a milestone of sorts for this system, I decided to rename it to arete, after Socrates’ ideal of the perfect human being (showing my influence to Philo 173.) As usual, this install was yet another smooth, successful, working-out-of-the-box setup (arete’s HP Deskjet 3745 printer and ATI Radeon 7000 card running perfectly,) with only the Internal D-Link/Conexant modem the only thing needing gcc love. Tommorow, I’ll set up migrating the old files from my Dad’s Windows partition over to The Excellent Distribution™, and have him explore it, as he plans to move over the newsletter publishing system he set up for the parish (from M$ Publisher) to Scribus. Hat tip to all the Free Software that made this possible!

    Next.

    Previous.