Search Results: "zed"

29 January 2009

Andrew Pollock: [life] And she's discharged

Sarah was discharged today. I decided to scrap trying to go to work, as I'd just have to leave at some point to pick her up. The hospital had to ensure that the nurse from Critical Care Systems was able to come to our home before they could discharge her, so that the IV antibiotics could be continued. We left the hospital at about 11:30am, and he got to our place just after 1pm. He whizzed through the whole process, as she was due for more antibiotics at midday and he wanted to get the IV started. She's on a four hourly course. Fortunately, that doesn't mean we have to change the IV every four hours. The way it works is the bag has enough antibiotics in a (presumably saline) solution to last six infusions on a four hourly frequency, and it's hooked up to a pump (that'll cost us $5000 if we don't give it back at the end), which takes care of everything. So once a day at around noon, Sarah has to disconnect the old bag, flush the line with saline, do something with some Heparin to prevent clots in the line, and hook up a new bag. The bag and the pump fit into a carry bag that can be worn like a bum bag or slung from her shoulder and looped through a belt. It'll be her permanent companion for the next (hopefully only) two weeks. The PICC has two ports (and I don't think that's the correct term) on it, and the IV is only hooked up to one, so the other one should be flushed and "Heparinised" regularly as well. The nurse comes back in a week with more supplies and to do some maintenance on site where the PICC line enters her arm. Critical Care Systems seems pretty impressive. They provide all the gear, fill the prescription, and bring it all out to you (by a nurse). They provide a 24 hour hotline to call if there's any problems, questions or concerns, and can dispatch somebody to us if necessary. We've got syringes preloaded with saline and Heparinised saline, more alcohol swabs than you can poke a stick at, and the fridge is full of IV bags. It's awesome that medical technology has progressed to this point, where Sarah can go about her business almost as normal, instead of being stuck in a hospital for another two weeks just because she has to have a tube in her arm. To prove this, the little trooper was back at her CNA course this evening, and starts clinical training tomorrow night.

28 January 2009

Wouter Verhelst: dlhack()

In my living room, there's a TV, with a computer connected to it. In that computer, there's a DVD-ROM player, a hard disk, and a card with a TV output. On that hard disk, there's Debian with xine to view DVDs When I originally put it there, I would pick up the keyboard to do some user input. This works, but a keyboard is klunky. So, instead, I've been working on jsxine, a little application that does not much more than open a window, and tell xine to play a DVD there, but use the joystick for UI[1]. My 'joystick' is a Logitech Wingman Gamepad Extreme, which has a cable long enough for me to be able to use it comfortably from the couch, so I can use it as a sort of remote control. The current version has quite some things hardcoded: button 0 is 'select', button 5 is 'eject', button 6 'previous chapter', button 7 'next chapter', and button 8 is 'start or stop playing'. The primary two axes move around in the DVD menu; and other stuff is not yet implemented. This layout, of course, makes a lot of sense on this particular gamepad, but I doubt it does on other joystick devices. And since I want this to eventually be useful for other people, too, I recognized that I would need some way to configure things. My initial stab at configuration would create a hash table of available actions, read out a configuration file, and then find the appropriate function pointer in the hash table. While this works, it has one rather important downside: adding a configurable action would requrie another item in the hash table; this would eventually make the hash table horribly long. So I thought, why not use the configuration value to ask the dynamic linker to get me a function pointer? With a little help from my friends, that's exactly what I did. Proof-of-concept code:
#include <dlfcn.h>
#include <stdio.h>
int function()  
	printf("In function!\n");
 
int main(int argc, char**argv)  
	int (*funcptr)(void);
	void* handle;
	printf("foo\n");
	handle = dlopen(NULL, RTLD_NOW);
	funcptr = dlsym(handle, "function");
	funcptr();
	return 0;
 
Compile with cc -ldl -rdynamic. Et voila, that gets you an application which can do a lookup of function names at run time. Long live C. Of course, there's a bit of a danger in the above example. A user could just write a config file that has things like 'open' and/or 'write' as arguments, or the like. One should make sure that it can be obvious from the function name that it does indeed define an action; for example, by giving them a common prefix, and prepending that prefix to the function name before handing the name off to dlsym(). But other than that, this seems to work. It apparently also is documented in the FreeBSD documentation on dlopen(), so maybe it's not as much a hack as I thought... Oh well. Note that on GNU systems, you can also put a #define _GNU_SOURCE before the #include <dlfcn.h>, you can drop the dlopen() call and go straight to dlsym(), with RTLD_DEFAULT as the handle. [1] Yes, I could have done a Xine plugin. I didn't want to. This is as much a project to produce something useful as it is a project to hack and have fun.

Andrew Pollock: [life] Today's excitement

It's been a somewhat long day... I got up at 6:30am for a 7am ankle physical therapy session. I went to the hospital after that. When I got there, a sonographer was doing the echocardiogram on her heart to check the valves. I missed the doctors. Sarah didn't feel any more knowledgeable about her condition even though they'd been through. The patient Sarah was sharing with had a bad night, caused her to have a bad night's sleep also, and she always deals with all of this crap much worse when she's got a sleep debt. Dinner stayed down, but breakfast did not. The sonographer seemed fairly confident about her heart condition. Usually they don't make any comments on what they're seeing and leave that to the doctors, so we took some comfort from that. I managed to corner the physician's assistant who had been following Sarah in her office, and quizzed her on what was going on. It turns out a PICC line had been ordered, and they get installed by specalised PICC nurses and that's all they do all day. The PA implied that it might not happen until tomorrow. The gall stones were definitely unrelated, and something to follow up with her primary care physician. Incidentally, Wikipedia has some wicked pictures of gall stones. Talk about freaky. I think I hung around until 10am, and then headed into the office to try and get some work done, with the intent to come back after work. Not long after, Sarah called me up all beside herself about the PICC line (she doesn't deal well with the idea of getting jabbed at the best of times, and being tired put her over the edge), so I scrapped work, and went back to the hospital for the remainder of the day. I decided to hunt down her cardiologist to see if the PICC line was absolutely necessary, and I managed to get the exact low down on her condition. So armed with the facts, I headed back to tell Sarah the news that she really should have the PICC line installed, and that she was getting off fairly lightly, relatively speaking. The PICC nurse had a cancellation, so she was able to do the installation today. It was totally less traumatic than I think either of us were expecting. It took about 45 minutes to install, and it was done at her bedside. Sarah was very brave and I don't think it really hurt her all that much. I watched the whole thing, and it was very interesting. It was particularly interesting because there was another nurse observing, so the PICC nurse was explaining everything as she went. She was also really nice and good at what she did (she'd been doing it for 14 years) so I think all of that helped. So Sarah's now got two IV ports strapped to the inside of her upper left arm (attached to the PICC line), and no other IV lines in. She should get discharged tomorrow after they sort out whether she's going to receive IV antibiotics on a 4 or 8 hourly schedule at home, and exactly how all of that's going to work. I think they send someone out to our place to give us some training, and someone comes out once a week to do a bit of maintenance on the PICC line itself. I presume I'll be her personal nurse again. All it involves is a bit of plumbing. Her cardiologist seems to think she should be able to still do her CNA clinical training with the PICC line in. She may just have some problems with lifting duties. I guess we'll just see how all of that pans out. So that was the excitement for today. Sarah had her appetite back at dinner time, and was generally in much better spirits when I left her this evening than she was this morning. I could go into much more detail about the ins and outs of the PICC line installation, but I don't really have the energy.

26 January 2009

Daniel Burrows: A map of the apt and dpkg state files

Continuing my recent interest in making diagrams of things, this weekend's project was a visual representation of what the global state files of apt and dpkg are, what's stored in them, and how they're manipulated. As before, this includes only the core part of the system (ok, I squeezed aptitude in there too), for the simple reason that I'm not smart enough to include more stuff in the diagram without making it utterly illegible. As it is, it's already pushing the boundaries of how much you can fit on a single page of paper: diagram of apt files This image is also available in svg and pdf formats. Be warned, though, that the SVG might display oddly in anything but Inkscape, and the PDF only displays correctly in Acrobat Reader. If you want to print off a copy without wasting toner, if you don't have a program capable of printing the above, or if gradients offend you, you can also download a simpler version of the diagram: simpler diagram of apt files Also available as an svg file or a pdf file. Unlike the last diagram I produced, this one was made in Inkscape. It took pretty much the whole weekend, most of which time I spent learning features of Inkscape that I didn't end up using. Oh well. I've come to the conclusion that Inkscape is an amazing graphics program and an utterly terrible diagram editor. Although to be fair, it seems to be one of the best, if not the best, diagram editors in Debian; also, if you slog through it and you have more graphical talent than me, the diagrams will look very good. [EDIT]: fixed an oversight in the first version of the diagram (apt-get also writes the extended_states file).

25 January 2009

Ana Beatriz Guerrero Lopez: End of backports and about KDE in Lenny

About a week ago I updated the KDE 4.1 backports for Lenny with the fourth and last revision of KDE 4.1.
As previously announced, this will be the last update available at http://kde4.debian.net What is next? The repository will continue there, so Lenny users can choose between KDE 3.5.9+ and KDE 4.1.4. But since 4.1.4 packages are not official, they do not have support: no bugs in the BTS or security updates.
If you are using Debian Lenny for stability and security purposes, you should use KDE 3.5. Testing users (future squeeze, current Lenny) can continue using them until KDE 4.2 reaches testing. Again, remember, no bugs in the BTS or security updates, but they will get a clean upgrade to KDE 4.2 in the near future. Unstable users. I have found that there are people using unstable with the backports, when they should be using experimental KDE 4.1. If this is your case, you can stick with 4.1.4 until KDE 4.2 reaches unstable or switch to experimental in a few days and get KDE 4.2 (no yet! it needs to be released first :) ). Last, but not less important, thanks to all the people helping with the backports: MoDaX for helping as backup and the rest of the Qt/KDE team who worked in the experimental packages. HE, zobel and aba for his sysadmin tasks. apol for allowing me torture his PowerPC machine. All those who translated the instructions into their languages and
helped to others users in mailing lists and forums. A quick note about KDE 3.5 to be released in Lenny As most of you have realized, the packages of KDE 3.5 in Lenny and unstable are a mixture of KDE 3.5.9 and 3.5.10. Given that KDE 3.5.10 was released after Lenny was frozen, we could not push this new version into Lenny, however the KDE 3.5 packages were patched about June last year with the latest changes in KDE 3.5 from the KDE subversion. This means some of the modules with the version 3.5.9 are exactly the same that is shipped as 3.5.10.
The only big stuff missing are the kicker improvements shipped in kdebase and some bug fixes in kdepim. But in global, it is closer to KDE 3.5.10 that to KDE 3.5.9. If you want to see what changes are you missing, check the KDE 3.5.10 changelog.

Junichi Uekawa: Theo's post on hardlink backup tools made me think.

Theo's post on hardlink backup tools made me think. In his post, Wanted: Incremental Backup Solutions that Use a Database , he proposed making a incremental backup solution on Database (RDBMS). He's right that hardlinking files so much is putting load on filesystem, especially when fscking. One thing is that although conceptually RDBMS is handling relations, physically (and practically) they are doing similar stuff with hardlinked filesystems. They are just optimized differently, tuned for their 'fsck' behavior with many hardlinks. So, there could be a filesystem which can be tuned for hardlinking. Of course, just because I thought about it it doesn't mean I have come up with a good solution to the problem.

24 January 2009

Brice Goglin: Debian/X.org notes - Howto Input-hotplug?

I have been wondering for a while how to get X.org "input-hotplug" to work, but I never actually tried before today. It is actually fairly easy, once you know what to do. Requirements First, make sure you have the evdev X driver installed (xserver-xorg-input-evdev). You might want to use X packages from experimental since things are much more recent than in Lenny or Sid these days, and upstream improved input management in the meantime. Then, if you are not running a pre-packaged kernel, check the the evdev driver is enabled and loaded in your kernel (CONFIG_INPUT_EVDEV). Telling hal what to do with input devices Now, you need to tell hal how to configure your input devices. Actually, you do not have much to do since latest xserver-xorg-input-evdev packages bring what you need. hal reads all fdi files under /usr/share/hal/fdi/policy to find out how devices should be configured. If you run lshal and look for input, you should see that the evdev is planned to drive your input devices. However, if you look at keyboard devices in lshal (look for input.keys), you will see that the US layout is used. To switch to another layout, you can add some overriding rules as a new *.fdi file in /etc/hal/fdi/policy/. For instance, to get French layout:
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keys">
      <-- Enforce XkbLayout=fr and XkbVariant empty -->
      <merge key="input.xkb.layout" type="string">fr</merge>
      <merge key="input.xkb.variant" type="string" />
    </match>
  </device>
</deviceinfo>
Thanks to this, you can enforce XkbLayout, XkbVariant and friends as usual in /etc/X11/xorg.conf. Don't forget to restart hal after modifying some fdi files. Then run lshal, and look for Xkb, you should find your setup there. Note that you can add some matching rules to configure some devices with different setups if needed. Just need to read the output of lshal and find something like a hardware identifier to match on. You can find some documentation about these rules by looking at the existing fdi files in /usr/share/hal/fdi/policy/20thirdparty/, and in the upstream x11-input.fdi (note that input.xkb.foo is the actual recommended syntax instead of input.x11_options.XkbFoo). Touchpads If you have a touchpad and want to use the synaptics driver, installing the xserver-xorg-input-synaptics will bring another fdi file. /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi matches input.touchpad in the device capabilities in hal. Now the synaptics driver will be automagically loaded for your touchpad (instead of evdev for regular mice). Again, you can override this rule in /etc/hal/fdi/policy/ and you can add many configuration options for synaptics as well. See /usr/share/hal/fdi/policy/20thirdparty/11-x11-synaptics.fdi to get an example. Fortunately, you will not have to manually take care of the above /etc/hal/fdi/policy/ file for ever. The plan is to have hal look at the Debian console configuration and get at least the keyboard layout from there automatically. Telling the Xserver to talk to hal Now, you need to tell the Xserver to use what hal wants. Basically, you want to remove everything about keyboard, mouse and other input devices from your xorg.conf. Just drop all InputDevice sections and all references to them within other sections. With recent Xserver versions, options AllowEmptyInput and AutoAddDevices are enabled by default (otherwise, you might have to add them in the ServerFlags section). For more documentation, you want to read Peter Hutterer's blog, especially this post and this one. By the way, if you don't want this input-hotplug thing and you want to run a recent Xserver anyway, you should set AllowEmptyInput and AutoAddDevices to off in the ServerFlags section. Update: Fixed the way to manage fdi files, fixed the syntax of input.xkb.foo rules, added a paragraph about synaptics, and organized things in sections. Thanks to everybody's comment.
(Permanent link)

Uwe Hermann: Recovering from a dead disk in a Linux software-RAID5 system using mdadm

RAID5 failure As I wrote quite a while ago, I set up a RAID5 with three
IDE disks at home, which I'm using as backup (yes, I know that
RAID != backup) and storage space. A few days ago, the RAID was put to a real-life test for the first time, as one of the disks died. Here's what that looks like in dmesg:
raid5: raid level 5 set md1 active with 3 out of 3 devices, algorithm 2
RAID5 conf printout:
 --- rd:3 wd:3
 disk 0, o:1, dev:hda2
 disk 1, o:1, dev:hdg2
 disk 2, o:1, dev:hde2
[...]
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 4 bytes in FIFO
hdg: dma timeout error: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 252 bytes in FIFO
hdg: dma timeout error: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 252 bytes in FIFO
hdg: dma timeout error: status=0x58   DriveReady SeekComplete DataRequest  
ide: failed opcode was: unknown
hdg: DMA disabled
ide3: reset: success
hdg: dma_timer_expiry: dma status == 0x21
hdg: DMA timeout error
hdg: 252 bytes in FIFO
hdg: dma timeout error: status=0x58   DriveReady SeekComplete DataRequest  
ide: failed opcode was: unknown
hdg: DMA disabled
ide3: reset: success
hdg: status timeout: status=0x80   Busy  
ide: failed opcode was: 0xea
hdg: drive not ready for command
hdg: lost interrupt
hdg: task_out_intr: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
hdg: lost interrupt
hdg: task_out_intr: status=0x50   DriveReady SeekComplete  
ide: failed opcode was: unknown
That's when I realized that something was horribly wrong. Not long after that, these messages appeared in dmesg. As you can see the software-RAID automatically realized that a drive died and removed the faulty disk from the array. I did not lose any data, and the system did not freeze up; I could continue working as if nothing happened (as it should be).
 md: super_written gets error=-5, uptodate=0
 raid5: Disk failure on hdg2, disabling device.
 raid5: Operation continuing on 2 devices.
 RAID5 conf printout:
  --- rd:3 wd:2
  disk 0, o:1, dev:hda2
  disk 1, o:0, dev:hdg2
  disk 2, o:1, dev:hde2
 RAID5 conf printout:
  --- rd:3 wd:2
  disk 0, o:1, dev:hda2
  disk 2, o:1, dev:hde2
This is how you can check the current RAID status:
 $ cat /proc/mdstat
 Personalities : [raid6] [raid5] [raid4] 
 md1 : active raid5 hda2[0] hde2[2] hdg2[3](F)
       584107136 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
The "U_U" means two of the disks are OK, and one is faulty/removed. The desired state is "UUU", which means all three disks are OK. The next steps are to replace the dead drive with a new one, but first you should know exactly which disk you need to remove (in my case: hda, hde, or hdg). If you remove the wrong one, you're screwed. The RAID will be dead and all your data will be lost (RAID5 can survive only one dead disk at a time). The safest way (IMHO) to know which disk to remove is to write down the serial number of the disk, e.g. using smartctl, and then check the back side of each disk for the matching serial number.
 $ smartctl -i /dev/hda   grep Serial
 $ smartctl -i /dev/hde   grep Serial
 $ smartctl -i /dev/hdg   grep Serial
(ideally you should get the serial numbers before one of the disks dies) Now power down the PC and remove the correct drive. Get a new drive which is at least as big as the one you removed. As this is software-RAID you have quite a lot of flexibility; the new drive doesn't have to be from the same vendor / series, it doesn't even have to be of the same type (e.g. I got a SATA disk instead of another IDE one). Insert the drive into some other PC in order to partition it correctly (e.g. using fdisk or cfdisk). In my case I needed a 1 GB /boot partition for GRUB, and the rest of the drive is another partition of the type "Linux RAID auto", which the software-RAID will then recognize. Then, put the drive into the RAID PC and power it up. After a successful boot (remember, 2 out of 3 disks in RAID5 are sufficient for a working system) you'll have to hook-up the new drive into the RAID:
 $ mdadm --manage /dev/md1 --add /dev/sda2
 mdadm: added /dev/sda2
My new SATA drive ended up being /dev/sda2, which I added using mdadm. The RAID immediately starts restoring/resyncing all data on that drive, which may take a while (2-3 hours, depends on the RAID size and some other factors). You can check the current progress with:
 $ cat /proc/mdstat 
 Personalities : [raid6] [raid5] [raid4] 
 md1 : active raid5 sda2[3] hda2[0] hde2[2]
       584107136 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
       [>....................]  recovery =  0.1% (473692/292053568) finish=92.3min speed=52632K/sec
As soon as this process is finished you'll see this in dmesg:
 md: md1: recovery done.
 RAID5 conf printout:
  --- rd:3 wd:3
  disk 0, o:1, dev:hda2
  disk 1, o:1, dev:sda2
  disk 2, o:1, dev:hde2
In /proc/mdstat you'll see "UUU" again, which means your RAID is fully functional and redundant (with three disks) again. Yay.
 $ cat /proc/mdstat
 Personalities : [raid6] [raid5] [raid4] 
 md1 : active raid5 sda2[1] hda2[0] hde2[2]
       584107136 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
Btw, another nice utility you might find useful is hddtemp, which can check the temperature of the drives. You should take care that they don't get too hot, especially so if the RAID runs 24/7.
 $ hddtemp /dev/hda
 dev/hda: SAMSUNG HD300LD: 38  C
 $ hddtemp /dev/hde
 dev/hde: SAMSUNG HD300LD: 44  C
 $ hddtemp /dev/sda
 dev/sda: SAMSUNG HD322HJ: 32  C

23 January 2009

Josselin Mouette: On the good use of compiler warning flags

The gnome-power-manager developers like clean code. Actually, more than clean code: code that will not generate a single nitpicking warning. The package builds with the following C compiler flags:
-Werror -Wcast-align -Wno-uninitialized -Wall -Wformat-security
Sometimes the compiler is more clever than the coder On the SPARC architecture, -Wcast-align really starts to mean something. Unlike most other architectures, any alignment error on here will leave you gather your teeth spread on the floor after you ve been hit by a SIGBUS. It tries to catch at build time alignment errors resulting from a cast between pointers to different types. Together with -Werror, it triggered a first FTBFS bug. The error occured on the following code:
        if (XRRGetOutputProperty (brightness->priv->dpy, output, brightness->priv->backlight,
                                  0, 4, False, False, None,
                                  &actual_type, &actual_format,
                                  &nitems, &bytes_after,  ) != Success)  
                egg_debug ("failed to get property");
                return FALSE;
         
        if (actual_type == XA_INTEGER && nitems == 1 && actual_format == 32)  
                *cur = *((int *) prop);
                ret = TRUE;
         
        XFree (prop);
        return ret;
More precisely, the error occurs when casting prop (which is an array of pointers) into an int *. The compiler is clearly right. The alignment requirements are different for a pointer and an integer; therefore, casting a pointer to a pointer into a pointer to an integer will always work, but dereferencing the pointer later will possibly cause a crash. Turning this expression into a memcpy leads to code that should always work. Lesson learned: do not design APIs where an array of pointers can actually store integers. Have you ever heard of opaque structures? and sometimes it is not This was not enough and a second FTBFS bug showed up. Here, the error happens in the following code:
static inline GstBuffer *
gst_buffer_ref (GstBuffer * buf)
 
  /* not using a macro here because gcc-4.1 will complain
   * if the return value isn't used (because of the cast) */
  return (GstBuffer *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (buf));
 
GstBuffer is a structure which contains a GstMiniObject at the beginning. Therefore, you conduct operations on the GstMiniObject through a mere cast. The first cast (GstBuffer GstMiniObject) is fine, but in the second cast (GstMiniObject GstBuffer), the compiler suspects a problem, since the alignment requirements on GstBuffer are stronger than those on GstMiniObject. The compiler is wrong because it didn t read the API documentation; otherwise, it would have known that gst_mini_object_ref can only return NULL or its argument, which means there can t be any loss of alignment. Since there are no function attributes to express such complex things, we are still forced to rely on the developer having correctly read the documentation. Way to go, compiler. Lesson learned: there are good reasons why some warnings are not part of -Wall. Especially, it is dubious to use them with -Werror. Does anyone know whether it is possible to apply -Werror only to some of the warnings and not to all of them? It would sound like a useful improvement.

MJ Ray: I m not going to FOSDEM 2009

FOSDEM is a place where free and open source software really means open source software and the F in FOSDEM is a token gesture to the free software movement if you believe FOSDEM organiser Philip Paeps. If that s so, I m amazed they can claim to promote the awareness of free software with a straight face. I m not going to FOSDEM again because there are better value-for-money events around now, but I do understand the motives of the various anti-Novell campaigners. The Boycott Novell site linked to my explanation of Boycotts a few years back. I really don t agree that A conference just is not complete without corporate schwag and presence. Presence? I don t really enjoy being jumped by salesmen. Schwag? There was one long-term useful item in my last conference pack, that was from an association and I would probably have bought a slightly better one if I hadn t been given it. So, I really don t understsand why FOSDEM are annoying people in part because they like branded cheap junk. I suspect most of it ends up in the bins before long. I mean, who needs a non-obvious bottle-opener? I have one on the waiters friend, another with a nice handle, one on my penknife, one on my wife s penknife and even one on the can opener s handle. There are probably a few more in my home and bottles aren t even so hard to open without a special tool anyway! Anyway, if you re going, I hope you have a safe journey. Maybe you could mention Glyn Moody s summary of the FOSDEM controversy to some people there. Call me when you re organising a trip to something like a drupalcon, wordcamp or LUGRadio Live.

22 January 2009

Benjamin Mako Hill: Annual Free Software Foundation Fundraiser

When I explain the importance of free software, I often use some variation of the following example:
Suppose I see a beautiful sunset and I want to describe it to a loved one on the other side of the world. Today's communication technology makes this possible. In the process, however, the technology in question puts constraints on message communicated. For example, if I pick up my cellphone, my description of the sunset will be limited to words and sounds that can be transmitted by phone. If I happen to have a camera phone and the ability to send a picture message, I will be able to communicate a very different type of description. If I'm limited to 150 characters in an SMS message, my message will be constrained differently again.
The point of the example is this: the technology I use to communicate puts limits and constraints on my communication. Technology defines what I can say, how I can say it, when I can say it, and even who I can say it to. This is neither good nor bad. It is simply the nature of technology. But it means that those who control our technology control us, to some degree. As information technology becomes increasingly central to our lives, the way we experience, understand, and act in the world is increasingly controlled by technology and, by extension, by those who control technology. I believe that the single most important struggle for freedom in the twenty first century is over the question of who will set these terms. Who will control the technology that controls our lives? Free software can be understood as an answer to this question: An answer in the form of an unambiguous statement that technology must be under the control of its users. When free software triumphs, we will live in a world where users control their technological destiny. We simply cannot afford to fail. The Free Software Foundation is the most important organization fighting for the rights of users in this struggle. Here are some of the ways that I plan to direct the FSF to support software freedom in the coming year:
Network Services Last year, the FSF organized a meeting on software freedom and network services that lead to the creation of the Autonomo.us group and the release of the Franklin Street Statement on Freedom and Network Services. As network services --- like those built by Facebook, Google, and others --- continue rise in popularity, progress in this conversation is of increasing importance. This year, I will direct the FSF to build on the work of Autonomo.us to launch the first of what I hope will be several FSF position statements on software freedom and network services. More importantly, the FSF will begin to provide support and planning for solutions --- technologies, social campaigns, and legal steps --- that will protect computer users whose freedom is currently threatened by network services. Enforcing free software licenses Early on, people who decided to work on free software did so because they agreed with --- or, at the very least, were willing to abide by --- the principles and rules laid out in our licenses. In our push for software freedom, we have created software of immense value and attracted companies and individuals to our community who are less willing, or simply less interested, in protecting users' freedom. In December 2008, the FSF went to court for the first time in the organization's history to force Cisco to uphold the freedom of the users of FSF copyrighted software. This lawsuit asks Cisco to live up to its obligations under the GPL and to ensure that it does so in the future. The FSF needs the support of its community in this and in future enforcement actions. The FSF has operated a compliance lab for several years and has ensured software freedom for countless users. As free software becomes more successful in the next year, the FSF will be playing an increased role in protecting software freedom from those who do not share its principles. Continuing the fight against software patents As I said last year, one cannot write non-trivial software today without running a serious risk of infringing patents. The software patent minefield we've found ourselves in is a very fundamental threat to the success of free software and we've already begun to see the first casualties and costs. We must eliminate software patents. Now. The FSF will continue its work toward this end. The FSF's End Software Patents project's major contribution this year was a brief submitted in the In Re Bilski case at the U.S. Court of Appeals for the Federal Circuit. Recently, an opinion was issued which seems to mark an important shift away from broad protection for software patents. With this victory, now is the time to keep up this momentum. The FSF is drawing up a strategy to do just this and will be announcing the relaunch of its campaign on February 9,2009 led by Ciaran O'Riordan.
Every recent fundraising appeal seems to mention the difficult economic climate and it seems to cliche to do so here. That said, the effect of a bad economy is, in fact, felt most strongly in non-profits dependent on donations. The FSF is not immune. The FSF's work is essential for success on the issues I've described here and on all of its other campaigns and projects. Although the cost of a membership or donation may be less easy to afford this year for many of you, the free software movement cannot afford a weakened FSF at this important moment. If you are not an FSF associate member, now is the time to become one. If you are already a member, please join me in giving generously through a tax-deductible donation. The FSF is a very lean, very humble organization of passionate and dedicated individuals working tirelessly for software freedom. Every single gift makes a difference.

David Welton: Github Part III

Since this seems to be fairly constructive, I'll keep going. Those not interested in Github, or the dynamics of open source code creation can safely tune out. Chris, the Github dude, has some more to say: http://ozmm.org/posts/forking_continued.html
I mentioned the Network Graph and Fork Queue but David mentioned neither. I think he doesn t know what they are, probably because I didn t explain what they are :)
I had had a look at them, and they're handy tools (I would never accuse Github of not doing good work, that's not the issue at all), but I would respectfully submit that perhaps Chris is looking at things from a very Github-centric perspective, in which it's second nature to go look at those. They aren't obvious, and certainly don't jump out at the user to say "hey, maybe this code your looking out isn't the latest and greatest!". For someone just cruising around, perhaps it should be more evident who's the 'top dog'? Chris then goes on with a very helpful and illustrative demo of how things work at Github, which is good stuff. However, at the end, he says something that I don't agree with:
It may seem strange, and perhaps even like a lot of work. Why should I have to check to see which is the most current? In the old model, there s always a canonical repository.
That's precisely the problem. It does seem like a lot of work, especially when your search space is not limited to Github, but may include other places like Sourceforge, RubyForge, Google Code, project specific sites, and so on.
In the old model, actionwebservice wouldn t have made it past 1.2.6. Welcome to distributed version control.
Plenty of 'old style' projects have survived beyond their founders' interest in the project. What happens is that you ask for permission to work on the project, and either :
  1. It's given to you, in which case you can keep working on the canonical code. For instance, someone could have asked DHH to work on the RubyForge version of actionwebservice. Did they? Did he say no? At the very least, he could have been asked to point the RubyForge actionwebservice page at some other site with a more current version of the code.
  2. You have to fork the project, and in that case, sure, you might as well have been using the Github model.
I've often found that people are happy to let you contribute to their projects, though, and part of my original point with all of this is that if people just go spitting out forks willy-nilly, it creates a "paradox of choice" type problem, and perhaps takes something away from the community aspect of open source projects. As people are fond of saying at the Apache Software Foundation, it's about the people, not necessarily about the code. I'm not saying that forks are always bad and that everything should be centrally done, but there's a balance to be struck between people just working on their own, and some sort of onerous, bureaucratic Central Project Authority. It's nice that people who want to improve the code make themselves heard on a mailing list/forum/whatever, and thus cover the "people" part of merging in new code and new ideas. More often than not, help and contributions are more than welcome. Design decisions and conversations recorded on mailing lists are available for people to peruse in the future when they have questions. Just to repeat something that bears repeating: I am not claiming that Github will lead to social disintegration of open source projects or anything drastic like that. However, I'm a bit wary of certain patterns I've seen. It's certainly possible that I'm wrong - as I mentioned, one error I might be making is that people are dumping code they simply wouldn't have shared on Github, because Github makes it so easy. I do hope my worries are unfounded, and in any case, it's a good thing that the Github guys are interested in the problem too, and will hopefully do things to alleviate it where possible.

David Welton: Github Part III

Since this seems to be fairly constructive, I'll keep going. Those not interested in Github, or the dynamics of open source code creation can safely tune out. Chris, the Github dude, has some more to say: http://ozmm.org/posts/forking_continued.html
I mentioned the Network Graph and Fork Queue but David mentioned neither. I think he doesn???t know what they are, probably because I didn???t explain what they are :)
I had had a look at them, and they're handy tools (I would never accuse Github of not doing good work, that's not the issue at all), but I would respectfully submit that perhaps Chris is looking at things from a very Github-centric perspective, in which it's second nature to go look at those. They aren't obvious, and certainly don't jump out at the user to say "hey, maybe this code your looking out isn't the latest and greatest!". For someone just cruising around, perhaps it should be more evident who's the 'top dog'? Chris then goes on with a very helpful and illustrative demo of how things work at Github, which is good stuff. However, at the end, he says something that I don't agree with:
It may seem strange, and perhaps even like a lot of work. ???Why should I have to check to see which is the most current? In the old model, there???s always a canonical repository.???
That's precisely the problem. It does seem like a lot of work, especially when your search space is not limited to Github, but may include other places like Sourceforge, RubyForge, Google Code, project specific sites, and so on.
In the old model, actionwebservice wouldn???t have made it past 1.2.6. Welcome to distributed version control.
Plenty of 'old style' projects have survived beyond their founders' interest in the project. What happens is that you ask for permission to work on the project, and either :
  1. It's given to you, in which case you can keep working on the canonical code. For instance, someone could have asked DHH to work on the RubyForge version of actionwebservice. Did they? Did he say no? At the very least, he could have been asked to point the RubyForge actionwebservice page at some other site with a more current version of the code.
  2. You have to fork the project, and in that case, sure, you might as well have been using the Github model.
I've often found that people are happy to let you contribute to their projects, though, and part of my original point with all of this is that if people just go spitting out forks willy-nilly, it creates a "paradox of choice" type problem, and perhaps takes something away from the community aspect of open source projects. As people are fond of saying at the Apache Software Foundation, it's about the people, not necessarily about the code. I'm not saying that forks are always bad and that everything should be centrally done, but there's a balance to be struck between people just working on their own, and some sort of onerous, bureaucratic Central Project Authority. It's nice that people who want to improve the code make themselves heard on a mailing list/forum/whatever, and thus cover the "people" part of merging in new code and new ideas. More often than not, help and contributions are more than welcome. Design decisions and conversations recorded on mailing lists are available for people to peruse in the future when they have questions. Just to repeat something that bears repeating: I am not claiming that Github will lead to social disintegration of open source projects or anything drastic like that. However, I'm a bit wary of certain patterns I've seen. It's certainly possible that I'm wrong - as I mentioned, one error I might be making is that people are dumping code they simply wouldn't have shared on Github, because Github makes it so easy. I do hope my worries are unfounded, and in any case, it's a good thing that the Github guys are interested in the problem too, and will hopefully do things to alleviate it where possible.

20 January 2009

Erich Schubert: Congratulations to the US and their new president

There are hard times ahead, but I figure that Obama might be just the right man at the right time to handle these issues. He gives the impression of being exceptionally smart and able to gather smart advisors around him. So I'm amazed at this huge step the US has made the previous weeks - one of the pictures of the year 2008 was Jesse Jackson crying after Barack Obama had been pronounced election winner. You do get the impression that after years of stagnation, the US is now trying to get ahead of the curve again when it comes to civil and human rights.I must admit that I really envy the US for this election result. We could definitely use some of that spirit in politics as well. And we also could use some smart people there ...

Steve Kemp: I saw green fields and flowers. I could smell the grass.

Fabio Tranchitella recently posted about his new filesystem which really reminded me of an outstanding problem I have. I do some email filtering, and that is setup in a nice distributed fashion. I have a web/db machine, and then I have a number of MX machines which process incoming mail rejecting spam and queuing good mail for delivery. I try not to talk about it very often, because that just smells of marketting. More users would be good, but I find explicit promotion & advertising distasteful. (It helps to genuinly consider users as users, and not customers even though money changes hands.) Anyway I handle mail for just over 150 domains (some domains will receive 40,000 emails a day others will receive 10 emails a week) and each of these domains has different settings, such as "is virus scanning enabled?" and "which are the valid localparts at this domain?", then there are whitelists, blacklists, all that good stuff. The user is encouraged to fiddle with their settings via the web/db/master machine - but ultimately any settings actually applied and used upon the MX boxes. This was initially achieved by having MySQL database slaves, but eventually I settled upon a simpler and more robust scheme: Using the filesystem. (Many reasons why, but perhaps the simplest justification is that this way things continue to work even if the master machine goes offline, or there are network routing issues. Each MX machine is essentially standalone and doesn't need to be always talking to the master host. This is good.) On the master each domain has settings beneath /srv. Changes are applied to the files there, and to make the settings live on the slave MX boxes I can merely rsync the contents over. Here is an anonymized example of a settings hierarchy.. So a user makes a change on the web machine. That updates /srv on the master machine immediately - and then every fifteen minutes, or so, the settigngs are pushed accross to the MX boxes where the incoming mail is actually processed. Now ideally I want the updates to be applied immediately. That means I should look at using sshfs or similar. But also as a matter of policy I want to keep things reliable. If the main box dies I don't want the machines to suddenly cease working. So that rules out remotely mounting via sshfs, nfs or similar. Thus far I've not really looked at the possabilities, but I'm leaning towards having each MX machine look for settings in two places: That way I can rsync to /backup on a fixed schedule, but expect that in everyday operation I'll get current/live settings from /srv via NFS, sshfs, or something similar. My job for the weekend is to look around and see what filesystems are available and look at testing them. Obmovie:Alive

Obey Arthur Liu: Debian Summer of Code 08 : Where are they now (part 1/3)

It s been a while now since the 2008 Summer of Code ended. This year, twelve (?) projects were selected. That s twelve students working full time on a Debian-related project during the summer. The Google Summer of Code has sometimes been criticized in the past for having a poor student-developer retention rate inside the host projects. One of the goals of the program has always been to bring new people to budding or established free software organizations and it s a pity that some would leave the project as soon as the program ends. On the other end, poor integration of created code within the project leads to work that is hard to merge in, or worse, doesn t get merged in at all. That s a waste of time and resources and a probably cause of global warming as well. Hopefully, it s not always the case. Some people choose to stay committed within the organization in the long-term. Useful code gets merged in and pushed to the public. I am going to give a talk about this at FOSDEM (go to FOSDEM!) so I m giving you a little preview. I need your help to collect information for my talk. As you know, information is always hard to come by with these kinds of projects so anything can be useful. Without further ado, let s have a look at the cast of the Debian Google Summer of Code 2008: Netconf, a network configuration management system Presentation Netconf is a network configuration management system designed with modern network infrastructures and the needs of roaming users in mind. It is a personal project of Martin Krafft that he started in 2007. He did some presentations about it that you can find on the dev website. The project proposal was introduced by the mentor. The work was mainly about completing the roadmap items for version 1.0. Most of the design was done and code fleshed out. The stated goal was to have netconf ready for lenny. Martin noted that due to lack of regular free time, he couldn t reach that goal by himself. Student Jonathan Roes was a computer science graduate student from the University of North Carolina at Charlotte. He had programming experience as a hobby for a long time and wrote some free games and libraries for the Nintendo DS and some proprietary webapps. He submitted a few little patches in mid-march right after the publication of accepted mentoring organizations and went on to work from mid-may to mid-august. He wrote a lot of code right into the trunk since the whole project was a prototype. Result The last commit by Jonathan was also the last to date in the main netconf git repository. No further progress has been made and obviously netconf didn t get into lenny. I couldn t find any further public involvement of Jonathan within Debian. The ultimate Debian database, all things Debian in a SQL database Presentation The Ultimate Debian database wants to reunite all Debian data sources in a SQL database The project was mentored by Lucas Nussbaum and co-mentored by Stefano Zacchiroli and Marc HE Brockschmidt. The project proposal was introduced by Lucas. Student Christian Neronus Von Essen is.. well, there wasn t much information readily available on him. Result The whole project is coded up and working well with a whole bunch of data sources. There will be a talk at FOSDEM about this so I ll leave it to Lucas to talk about it in detail. I couldn t find any further public involvement of Christian within Debian. Security-beta, a beta testing for Debian security updates Presentation The task is to improve the quality assurance process for security updates by providing a public security update beta test program in addition to the existing QA done for security updates. During the preparation of security updates, there s an inherent delay between the initial upload of the fixed packages and the time until the packages have been built on porter machines. This time gap will be used for a new security update beta program. The project was supposed to be mentored by Moritz M hlenhoff. Student The project was supposed to be done by Nico Nion Golde. He is studying computer sciences at the Technical University of Berlin. He s also a DD. Result There s no nothing. Nico, what happened ? And obviously, he s still developing for Debian. Debgraph, a generic infrastructure for the development of packages management tools Presentation In a large software ecosystem such as Debian Linux, there is the potential for dependencies among software packages to create complex management and technical problems. For example, dependency loops (cycles) in which a package directly or indirectly depends on itself can confuse package management tools as they determine the proper order of package installation. debgraph helps developers to solve this problem by enabling generic queries (e.g., Give me all the nodes that depend on package X ) against the graph of packages and thus automating much of the manual labor that is typically involved in resolving dependency problems. The project was mentored by Robert Lemmen, who introduced the project proposal. The project was already started and the C++ code foundation was done by the time it was proposed. Student The project was executed by Adam Jensen, research assistant in the Software Engineering and Network Systems Laboratory at Michigan State University. Result Adam maintained a blog about his progress and finished ahead of schedule. However, the resulting work seems to be unused, which is a pity since the code could be used within other programs (package managers?). I couldn t find any further public involvement of Adam within Debian.
That s all for now. The information is quite fragmented I admit. Most of it was pulled from Google, mailing lists, commit logs, blogs, whatever. If some projects are lacking in information here, it s because I couldn t find it readily (which is an issue in itself!). In my next post, I ll try to analyze the success and failures to extract some insight. Teaser: pet projects!
If you re a student or a mentor mentioned above, feel free to fill any of the blanks in my report. It s much appreciated. You re not a student or mentor mentioned above and have an opinion on how to improve the next Debian Summer of Code ? Feel free to comment.
Sledge, ping! Here s a list of projects to be described in my next posts:

19 January 2009

Stefano Zacchiroli: gitweb vs DSA 1708-1 on lenny

packages backported by yours truly Just in case you need backported packages for DSA 1708-1 affecting backported gitweb to Etch (and in case you trust my as a builder), I've made available mines (arch amd64, signed with my DD GPG key, together with backports of build-deps). No, sorry, no upload to bpo: I did the rebuilds in a hurry, without bothering to check the backports guidelines as I usually do before uploading to bpo. Packages tested and working properly on medium-sized machines, including a forge-like service. Ah, right, beware that gitweb.css changed location since the last version in bpo, the new location is /usr/share/gitweb/gitweb.css, upgrade your links / alises / whatever to avoid a 80's theme for your brand new gitweb.

Wouter Verhelst: Re: emulated buildds

Aurelien, your claim is wrong. About a year ago (IIRC; might've been longer), the Debian/m68k team decided that it wanted to do emulated buildd hosts, since that would allow us to more easily keep up with unstable. We discussed it in the team, we discussed it with ftp-masters, and we all decided to go for it. We've had emulated m68k builds go to the archive for quite a long time, with full knowledge and agreement of ftp-masters. We realized that emulated builds could be problematic, but we evaluated the issues and decided to take that risk, as a team. The reason your key was rejected for uploads of arm binaries was because you started doing those emulated builds without discussing it with the arm buildd maintainers, and without discussing it with the arm porters. You just decided it might help, so it must be good, right? Finding the difference is left as an exercise to the reader.

Gunnar Wolf: About the recent events and possible outcomes in Israel and Palestine

Several friends, from different groups and backgrounds and with different points of view regarding the current war in Israel (and regarding the Arab-Israeli conflict in general) have asked me for an explanation on what is happening there, what is (my view of) the real conflict, its causes... and any possible answers. And yet I am quite far from being an authority, I do want to write something about it. Be prepared, as this post is quite long.
And yet, after writing frankly a lot more than what I expected... It is by far not enough. I have still much more to add, but I have to say "stop" at some point. So, here you have it: My points of view, as well as some explanation on why are we standing where we currently are.
I am writing this based just on my personal experiencie and, of course, my personal point of view. Furthermore, I wrote a good part of this text while riding a bus, with no network access, so I am offering very few references - In any case, it will allow me to make much more progress. References always take as much time as the text itself! About me Why am I writing this? Why do people ask for my opinion? I must start by explaining who I am, so the rest of this makes sense. I am a Mexican Jew. That means, I was born in a Jewish (albeit secular) family, and grew up in an environment with general Jewish culture. My direct family (say, my parents and brother, and to a lesser degree my closest cousins) are not at all religious, I'd even venture to say most of us are complete atheists. Yet, besides the cultural belonging (which is a mixture of a Eastern European culture with lots of Idish words and dishes and general humor), my family has a strong national identification - In other words, I grew up in a fully Zionist environment, which traces back to Poland.
My grandmother was member of Hashomer Hatzair in Poland, since the early years of its existence, late 1910s and early 1920s. What is it? To make it short, a Zionist Socialist, Kibbutzian youth movement. It has many similarities (and somewhat stems indirectly from) the Scouts many of you will be familiar with, but -obviously- has a way lengthier agenda. And, yes, nowadays I feel it is somewhat out of reach with the current state of the world - It was founded in 1913, and only slightly adjusted its principles since then.
I will talk more about Hashomer later on.
My grandmother arrived in the late 1920s to Mexico, for familiar and economic reasons, but still dreamt about living in Israel for a long time. As they grew up, first my uncle joined Hashomer in Mexico in the late 1940s, when it still pursued a very much Soviet-style ideals for Israel (one of the core points that changed during the 1950s); both my father and my mother joined in the late 1950s (in fact, that's where they met). My cousins and myself were very active in the 1980s and 1990s.
The Iszaevich family has something very unusual, I'd say, engraved in our genes. We live very deeply our ideologies. That's the only explanation I can find to the way we all have led our lives. I won't go into the other family members' details, but just into mine: I was fully convinced of all we taught to our younger members and what we discussed among ourselves. I am among the very few people who really learnt Hebrew at my school, and that was only because I really cared - I know some people that just after 12 years of pseudo-learning could maybe utter a few phrases.
After finishing high school I went with my Hashomer group, together with people my age from other similar-minded Mexican Zionist youth groups, to live and learn for a year in Israel, on what is usually known as shnat hajshar - A year to get ready. To get ready to what? But of course, to come and give back go the younger groups of the movement, and finally go back to Israel and settle there definitively. I came back to Mexico, and after one year I did the only thing that was logical: I became an Israeli and went to live to a kibutz - Zikim, a beautiful place just between Ashkelon and Gaza, very near the sea shore. It was a beautiful period in my life, and I really enjoyed it - But it didn't last for very long - I quickly grew to hate the Israeli society at large. A society full of rage, of hatred. Not just between Arabs and Israelis, as many would think from the outside, but between religious and seculars. And between immigrants and locals. And between leftists and rightists (in several dimensions, as it is one of the countries where you can most easily be a economic leftist while being a political rightist - a complex society it is). A society full of disrespect and intolerance. A very hypocritical society. And one of the things that most shocked me: I wanted to live in a society of proud of its existence, that's what I had learnt Israel was - But Israelis aspire and dream of being anything else (and mostly US-Americans) in a way that made me sick, more than anything I had previously seen in Mexico.
I loved the life at the Kibutz, and I loved being an agricultor, doing hard work every day and literally getting the fruit of it. However, I cannot live isolated to a 300-people universe - At least once a week you have to go to the city if you don't want to become insane. And I could not stand the sick Israeli society.
Anyway, to make things short: After six months as an Israeli, I came back to Mexico. I went through a long period of finding myself, as I could not uphold anymore my Hashomer ideology (if I am not going to live by it, how can I continue teaching it?). Many people do anyway, but for the first months, where my Hashomer work was basically all of my life, I felt really uncomfortable. So, in short, I severed all of my relations to the Jewish community, and even denied for a long time my Jewishness until I found a (I think) better balance.
Today I am at peace. But anyway, I wanted to talk about myself in the critical period that marked me in this regard: The 1990s. Enough, lets get down to business. Zionism 1870-1920 Many people argue that the Jews invaded the Palestinians homeland - And yes, nowadays I cannot counter this. But we cannot judge what happened then based on what we see now.
Modern Zionism started around the 1870s. The Jewish history is full of pogroms and persecution, in different countries all over Europe - And a group of young people decided the only solution was to build a place to call their own. And yes, this was full of idealism and in no small part the foolishness of youth. For several centuries and up to 1920, all of current Middle East were provinces of the Ottoman Empire. Before Zionism began, the population of today-Israel was very sparse, not more than 400,000 people - up to 5% of them Jewish, around 10% Christian Arabs, and the remainder, Muslim Arabs. Of course, the low population was mostly because the country was mostly hostile - A desert in the South, mostly swamps in the North, and some minor towns mostly in the hills. It was a mostly forgotten province, away from the central Turkish rule, and there had been no frictions with the local population. It was a nice place to go, thinking -again- as a fool youngster, or as an idealist. They said, lets take a folk without a land to a land without a folk.
The number of accomplishing Zionists (this is, people who actually went to Israel instead of just talking about doing so) was not high during the first decades. But towards the 1890s, it gained critical mass. The political Zionist movement was born, with Theodor Herzl as a leader, and they started pushing -politically- for different governments to concede a territory to Jews. They went to the Turks, and didn't really get much echo. Went to other colonial powers of the time, and got unfeasible promises with no real backing (i.e. Birobidjan in Eastern Russia, Uganda in Africa)... And, as it happens in strongly ideologized movements, the movement started splitting into different groups with slightly different positions.
And no, I am not talking about the People Front for the Liberation of Judea and the People Judean Liberation Front, but I very well could. Sometimes the differences are as ridiculous as that. But hey, I take that most of my readers are acquinted with the Free Software issues, right? Think BSD vs. GPL vs. OpenSource. To give a broad idea - Only in Mexico City, with a very small Jewish community (~30,000 people), in the mid-1990s we had over 10 such movements, with 50-150 youngsters attending each. And even though some were local, and even though some very important ideologies are not represented in this country, they are all different enough to exist as separate entities. British Mandate The Ottoman empire was divided after the first World War. Its possesions in Europe became independent states, while in Asia (and Africa, if you take the semi-independent Egypt and part of Sudan into account) they were taken over as colonies or protectorates by France and the UK - Evidently, attempting to secure a long-term dominion over the area. In some aspects, they failed. In some aspects, they were (and still are) tremendously successful. The division of people by setting arbitrary boundaries has led to countries sustainable only by force and a harsh rule (such as Iraq, Lebanon and Syria), or doomed to poverty (and thus submission) due to lack of natural resources (as Jordan). Focusing on Israel/Palestine, the UK entered the area by making mutually incompatible promises to arabs and Jews - i.e. the Hussein-McMahon letters and the Balfour declaration, both ambiguous enough to lead to... Well, today. The UK rule was disastrous to the region, both in giving (and taking away) power from all sorts of puppet regimes, and swiftly going away as soon as things started looking too complicated. Yes, typical colonialism.
So, while up to the 1920s there was no real animosity between Arabs and Jews (as i.e. the Faisal-Weizmann agreement shows), during the next decades the seeds of hatred started growing, from both sides.
Many people still quote the 1947 partition plan as the direct antecedent towards Israel's real existence - That was not the first partition plan that existed. Ten years earlier, the Peel commision suggested a similar partition involving forceful population transfer. And many people see the separation of Transjordan (now Jordan) from Palestine in 1922 as a first partition. It is understandable that both partition plans (much more the 1947 than the 1937 one) were accepted by Zionists: Going from having nothing to having something (and against all odds in the environment they lived) is acceptable.
From the Zionist side, two main groups rejected the partitions: The right-wing and religious groups, insisting that the whole of the Mandate should become Israel, and the left-wing groups, which advocated for a single, bi-national state, with equal rights for all of its population. Go over and read this last link, as it was quite interesting (to me at least) to see how this solution has kept existing and regarded by (relatively) many people, and has many interesting links. 1948 onwards: Where did the refugees come from? The November 1947 partition didn't exactly translate to a planned, smooth Israeli independence - It led to six months of revolts (basically, a civil war). By mid May, the UK government and troops abandoned the territory, and one day later, Israel declared its independence. And, of course, all neighbouring countries (and Iraq) sent their troops to invade Israel. The war lasted for over six months (cease-fire was signed in January 1949). There was an intense Arab campaign indicating the armies would enter Israel and devastate it, leaving no stone in place, indicating Arab population to temporarily leave the Jewish-destined areas. The war, they said, would not take more than a couple of months, and they would be able to go back home.
Only that... When the war ended, the results were far from what the Arab governments expected. Not only Israel continued to exist, but it conquered important territories.
Of course, the Israelis were not innocent from said exodus: During the 1947-1948 civil war, and the independence war, some of the existing so-called self-defense forces (some of them were really defensive, while some were quite aggressive, even terrorist) attacked Arab villages in strategic or predominantly Jewish areas to prompt them to leave - yes, what we today call ethnic cleansing.
I had (in my head) the number of 650,000 Arabs (from a total of slightly over a million) fleeing to neighbouring countries. Wikipedia states that it is somewhere between 367,000 and 950,000. A similar number of Jews were expelled from Arab countries, many of which arrived to settle at Israel (and many others went elsewhere - For instance, a good part of the Mexican Jewish community is from Syrian origins - Many of them fleed in those years). Israel didn't accept back the (relatively few) Arabs that requested to resettle, as they were seen as hostile population - but neither did the countries that "temporarily" accepted the Palestinians accepted them as citizens. The Palestinian refugee camps today, mainly in in Lebanon, Syria, and the occupied territories held by Israel have terrible living conditions, and its population -despite living there for over 60 years- have no civil rights at all. Note that I'm omitting Jordan here, although it has several camps as well, as their situation is way better.
The Arab population that didn't leave did receive full Israeli citizenship. No, their living standards are not up to level with the average Israeli. The country and the society do have a sensible degree of racism and segregation. But the situation is nowhere as terrible as it is in the camps.
The areas which were originally to become Palestinian and were not conquered by Israel -this is, current-day West Bank and Gaza- bacame respectively Jordan and Egyptian territory. While Jordan did fully extend its soverignty covering the West Bank, Egypt didn't - Gaza is, since 1949, occupied military territory. Gaza, among the most densely populated areas in the world, has had their inhabitants under military rule ever since. When Israel returned the Sinai after signing the peace treaty with President Sadat, Egypt didn't accept Gaza back - And that's where today's greatest problem is born.
Now, Israel conquered those territories in 1967, along with the very sparsely populated Sinai and Golan. For the first ten years, the territories were basically only administered (yes, under a military rule). In 1977, with the first right-wing Israeli government, an extensive settlement policy began (and led partly to today's seemingly unsolvable situation). In 1980-1982, Israel withdrew from the Sinai. In 1981, Israel claimed full soverignty over the whole of Jerusalem and the Golan. In 1993, the "Oslo Agreement" was signed between Israel and the PLO, and it seemed we were heading towards a bright future. I lived in Israel between 1994 and 1996 - Yes, the most hope-filled period in the country's life.
Since 1996, I have tried to keep up to date with the country's evolution. All in all, even if I won't live there again, it is a country I learnt to love, a society I have long studied (even if in the end I did include many references, I wrote most of this text just off the top of my head, with the data I remember - so it might have several big errata). And yes, I keep the political stand I had 12 years ago: The only solution is to dialogue, to treat the current enemies -and not only their governments- with respect, recognizing their dignity and right to life, to self-determination. Only then we will change the status quo. How not to fight hatred Since 1993, the dream of peaceful coexistence seems to have faded. What we saw during the past three weeks, along to what we saw in Lebanon in 2006, is plainly a gross mistake if the goal is to achieve good, lasting peace.
Try to imagine how could life in Gaza be, even in the total absence of Israeli attacks. Just to set some numbers first: The Gaza strip hosts almost 1.5 million people on 360 km . When I lived in Israel, I was constantly surprised at how small a country it is - Israel tops at 550Km North to South, 150Km east to West (it is amazing, almost wherever you stand, except in the middle of the Negev, you can see the country's borders. Yes, I recognize as the border the so-called Green Line); over half of the territory is a desert, and it hosts seven million inhabitants. And it is hard to imagine how that country can be economically viable.
I do not find it feasible to imagine Gaza and the West Bank integrating a single country, and not only because they are separated by ~40Km, but because they are so sociologically different. People in the West Bank, yes, live opressed under military rule and subject to a much more constant, more visible apartheid-like state (as the territory is truly sprinkled with Jewish outposts which many Israelis refuse to recognize as their own, but still, which have incredibly higher living standards). The best land has been taken away from them, yes, but they have some space between cities to have some farming, to communicate, to... Breathe. Besides, West Bank inhabitants -even those in refugee camps- have much better living standards than anybody in Gaza. It is still an overpopulated area, but not nearly as much as Gaza.
Gazan population have been driven towards extremism. And yes, there was a civil war between Palestinian factions, as the world views between both populations are completely different - However hostile a Jenin inhabitant can be towards Israel, he does not lead the life -if it can so be called- you see at Khan Yunis.
But back to Gaza... What Israel is doing (and not only during this military operation terror campaign is wrong, from any rational point of view. Israel wants Hamas to become weaker? Then don't drive the population into supporting them!
Palestinians started giving over 50% of their support to Fatah (ex-PLO), and under 20% to Hamas. That was less than 15 years ago. However, Fatah has shown to be corrupt and inefficient at building infrastructure and improving life conditions, ineffective at negotiating a permanent agreement which secures dignity and sustainability to their people. Hamas stands as a religious, righteous organization. There are no serious corruption charges against any Hamas leaders. Hamas is clearly still at war - They didn't subscribe any peace agreement so far, and their stated #1 goal is to build a Muslim State in the whole of Israel. And the Hamas movement -like Hizbollah in Lebanon- has built quite a bit of infrastructure in the areas they control - Mainly housing. Yes, housing where they mix their own offices, many will accuse, getting human shields for free. But still, they are benefactors to a dehumanized, pauperized population.
I find it obvious that, if living conditions were at a basic level in the region, support of Hamas would decrease. Even more, of course, if they improved due to Israeli support. Israel controls this territory, so it is responsible for the well-being of its population, like it or not. And Gaza is simply too small and low on resources to survive by itself.
I was a bit surprised to find mention -although very brief- of a three state solution - And yes, this is close to what I would expect as a viable outcome. It is clear that Israel will not ever grant full citizenship to the Palestinians, as they would -euphemistically speaking- challenge the Jewish character of the State. Dropping the euphemism, Israel relies on apartheid in order not to become an Arab majority country. I might have some numbers wrong, but AFAIK, there are ~7 million Israelis, 20% of which are Arab citizens (which means, 1.4 million Arabs and probably 5 million Jews, with many other minor denominations for the difference), and ~4 million Palestinians live in the territories. Today, the country is already predominantly Arab, or at least is close to being so. So, Israel should permanently, formally disengage from all of the occupied territories. And in order to ensure violence stops, start a comprehensive, unconditional, long-term aid program. Start with giving them autonomy to regain their sea, as the Gaza port has long been closed. Allow the airport to operate again. Instead of bombing tunnels in the Egypt-Gaza borders, allow Gaza to trade with Egypt - Perhaps even to integrate territorialy, if the conditions are met. Treat their people with respect, and help them ease the terrible situation they have lived for so many decades - and then, undoubtely, terror will stop.
The West Bank? Possibly it could become a Palestinian state by itself. Possibly, it could integrate back to Jordan. That would be up to Jordans and Palestinians to decide. Of course, Jordan has already a large segment of its population defining itself as Palestinians, which counts both for and against. So, I won't venture into this supposition.
But anyway - Back to what prompted me to write this text -yes, a very or maybe even too long text - I hope somebody even takes the time to read it!- is to explain what is my point of view on the current situation, and why.
Today, a cease-fire was announced, after 23 days of murder and destruction. I sadly do not hold very high hopes for it to be lasting, much the less to be enough, to lead to what they call a de-escalation of the conflict. The most I can currently do is to voice my opinion, and hope that mine is just one more voice pointing to a sane solution, to a permanent, dignifying way out, for all people involved. Every people has the right for survival and for safety. We cannot deny this to any others. And certainly, we cannot expect anybody not to fight for their right to live.

Aurelien Jarno: Emulated versus paravirtualized build daemons

There has been a few flam^Wdiscussions about emulated build daemons, each time coming to the conclusion that we should not upload packages built on an emulated machine to the archive. However Debian has started to use at least one paravirtualized (Xen) build daemon, the i386 experimental one. The result is that one of the tests of the GNU libc testsuite is failing. On the other hand, the GNU libc and the GCC testsuites are giving the same results on a QEMU emulated machine and a real machine, for amd64, arm, armel, i386, mips, mipsel and powerpc. Same for KVM on amd64 and i386. I wonder if we made the right choice

Next.

Previous.