Please subscribe to RSS Feed! :)

So, I have someone on Identi.ca (@flameeyees@identi.ca) discussing with me me about my views on FatELF. No biggie, but trying to continue the argument (pointless as it is) there is just too much work: the character limit does not permit real discussion on such a complex issue. So, permit me to address each of the issues raised as I understand them and rebut. Then conversation can continue, if at all desired (though seriously, I don’t know that *I* desire to do so).
First point: FatELF would be useless because “you can do that already, write a cc frontend that compiles the same file multiple times, it’s _not_ hard, I’ve done it before“. Okay, so the proposed solution here is to write a compiler driver that will interpret arguments and, from a single Makefile, build for multiple platforms. There might even be something out there for that, but simply put, if GCC supported this feature intrinsically, then everyone would have it and it would be done in a standard way. Free software works better when everyone can agree on a single standard way of doing things, and not just a single standard template for how it might be done. Using addons to perform this function still yields multiple binaries that have to be shipped anyway, which is decidedly not the aim.
Second point: “how is shipping one (fat) binary ‘better’ than shipping one auto-extracting auto-deciding archive?” Making the assumption that the toolchain and kernel all support the feature as a standard thing here, the difference is simple: the kernel ELF loader would be able to decide which sections of the ELF file should actually be loaded in memory, read only those sections, and go on about its business normally—the rest of the process would not need to change in any way. No temporary copies need to be made, no images need to be extracted, nothing like that has to be done. However, the inverse is quite a different story. Let’s make the assumption that you’re using a POSIX shell script, with the archive of all of the possible binaries appended to the POSIX shell script. First, the script has to be prepended to EVERY such archive (meaning that different versions of the script could exist, and as any programmer knows, DRY), and the script is not going to be trivial: it would have to have code to detect and support every single individual platform. Furthermore, it would require that the user have permission to extract the payload, make it executable, and run it. This is the same deficiency that makes gzexe impractical for everyday use; I know that at least on all the servers that I manage, /tmp is mounted read-write but with execution of scripts and binaries disabled. Finally, it would fail to properly work in the event that something needed to be setuid—that information would have to be in the payload itself, which is absolutely not portable from one system to another. It just cannot be made to work in a generic enough fashion to be reliable on all different types of platforms with different administrative decisions made in the management of those platforms, and in many cases would require an increased attack surface just to be made workable.
However, if FatELF (or, honestly, anything that is truly equivalent) were used, an administrator could copy the binary from one system (say, an x86) to another system (say, a PowerPC) that has all of the other dependencies filled for it, drop it on the filesystem, chown/chmod it once, and it would Just Work. setuid, if needed, would be honored by the kernel, and no extraction has to take place. No additional temporary disk space would be required, nor would it be necessary to incorporate any logic into the ad-hoc “loader” (if it could even be called that) to try to find a filesystem that is read-write with execution permitted for the current user, and therefore no special privileges from the user would be necessary.
In fact, the only way to solve the problem reliably at present would be to have something like /var/cache/adhoc-fat-binaries, and have all ad-hoc “fat binaries” be setuid 0 (or setuid to some user that has all necessary privileges to make something setuid 0 if necessary, probably only UID 0 has that privilege on most systems) so that it could (a) write to /var/cache/adhoc-fat-binaries and (b) set the setuid or setgid bits if necessary for the program to fulfill its function. And it deserves to be restated: we all know that having a single specific standard and adhering to it—even when the standard is less than ideal (and in some cases, like X11, falls quite short of ideal)—is far better than having 100 different and incompatible ways to do the same thing. It’s one of the things that we people in free software know pretty damn well.
See, I don’t see something like FatELF being used for distribution binaries, or anything that would be distributed in an operating system distribution package, except perhaps in special situations where something like biarch is natively supported on the hardware and it would be feasible to permit that sort of flexibility. Instead, I see something like my current situation: I administer several machines for small businesses, and not all of them are the same hardware platform. They are all the same operating system and many of them have the same libraries installed. Some of them are 64-bit and some are 32-bit. Some are x86, some x86-64, and some are neither. But I would very much like to write a single program, say “make” and copy the file to every machine so that it just works. For the moment, if I want something like that, I have to just use something like Java, C#, or a script. Or, if I need something setuid, I do it in C and compile it for every system, shipping the source code file to the systems instead. But it would be more efficient to not have to do that. That is why I would see FatELF being a “good thing”.
I know that I am in the minority.
That brings me to point three: “because in 99% of all usage, the kernel won’t _need_ it. And its cost in effort and overhead would be higher.” For this next part of my post here, I am going to be looking at the Linux kernel, version 2.6.34, which I have just downloaded from kernel.org, which is 64 MB compressed (using bzip2!) and takes up 442 MB when uncompressed, before touching any file in the tree. Now, I am looking at this for x86-64 because that is the system I am running on and typed “make menuconfig”.
Who needs any of the following options? I am willing to bet that the following options are not needed in 99% of all (desktop, server, and embedded, combined) usage:
I can’t even go on. Twenty is enough; I think I have made my point. In 99%+ of all situations, these options are either always on or always off. They are rarely modified. And the kernel still supports a.out from IA32’s really old days‽ Seriously?
What does this tell me? It tells me that FatELF—or anything else that came along and did something like what FatELF would do—has room in the kernel. And if it were for whatever reason incompatible with current ELF (as it would very likely be) then the kernel could still support “old” ELF, without any of the extra fields or sections.
And actually, there is a great deal of possibility around something entirely different altogether. FatELF isn’t the most technically elegant thing I can think of to solve the problems that it solves, but I have yet to see something else seriously proposed. I can think of something even better, actually. We are all taught that operating systems are here to abstract us from hardware, so that we can write applications and not have to worry about communicating with the hardware directly because the OS handles those details for us. Well, if that is the case, then why don’t operating systems also abstract the system’s processor? Why don’t we have operating system kernels that provide a virtual instruction set? Yes, I am talking about essentially moving the application VM into an operating system kernel, though ideally with some supporting utilities in userspace to do things like hold persistent JIT caches and so forth. However, that’s for another post, another time.


March 8, 2010 - 1st Annual Ubuntu Women Project "How I discovered Ubuntu." International Women’s Day Competition
The Competition which was announced back in January, asked women and girls who use Ubuntu to submit their "How I discovered Ubuntu" stories. We as a Project acknowledge that there is no one definite answer to "How do you get women to use Ubuntu?", but wanted a way to highlight some of the various ways that women become Ubuntu users, contributors, and developers and at the same time not only have those stories as examples but also as a growing gift of encouragement and inspiration to women.
In order for events/competitions to be successful it takes community participation, and a heart felt thank you to all those who participated by submitting their personal "How I discovered Ubuntu." stories, those who took the time to vote, those who helped promote, and those who supported this initiative as well as offer encouragement to those might not have submitted their stories otherwise. I am grateful for everyone involved in the Ubuntu Women Project and greater Ubuntu Community as a whole who are continually helping to provide both the platform and encouragement for women to contribute to Ubuntu.
The winners of an awesome prize pack
are: Elvira Martinez and Karen Y. Perez with honorable mention going to Jen Phillips as well. CONGRATULATIONS!!!! Here are there stories:
***Elvira Martinez "tatica1" ***
Today my Honduran team mate Diego Turcios shared with me this link to Amber’s blog that excited me to finally write about how I met Ubuntu. I wanted to share this a while ago but I feel motivated about doing it through Ubuntu-women and not just for the sole interest in participating in the contest. I think it will be very interesting to hear how other women became interested in Ubuntu and others may be interested in my experience, specially considering that I am not the “computer girl” precisely.
After nearly 20 years after my high school graduation in Colombia Lycée Français Paul Valery, I found again one of my classmates through Facebook (I guess) Fabian Rodriguez known as MagicFab who after asking him what he was doing today, he mentioned Ubuntu as part of his activities. And I say activities, because Ubuntu is much more than an operating system.
I’ve always liked the world of computer science and unfortunately that was not what I studied, but I learned on my own how to manage, fix, clean my home machines. I could say that the world of computers is my passion and when Fabian told me about this, I knew it was no fluke.
I remember the first thing I said was: Ubuntu what?? How do you eat that?? And then after a brief speach about it and some information he sent to me to read on the subject, dropped his usual phrase, “If you want to install it, I can help you do it now”. Well, two days later, I was harrassing Fabian to help me install Ubuntu after a bunch of questions I had.
Some of my concerns were:
Well, the day I gave a YES myself to Ubuntu, began with a phone call from Fabian from Canada. After downloading into my own computer some files, we start by checking whether they were good and then install it. I remember Fabian told me, don’t install it yet first test it. Then after his explanations that I could partition the computer and leave Windows intact but also have Ubuntu too I said “Let’s do it and install it now”. And so it was, on the phone, with his help, that I installed for the first time in one of my computers Hardy 8.04 and some months later in another Ubuntu 8.10.
When he finally said, “Take a last click and you’re done, finished,” I could not believe it!! First, I had allowed to risk to install another operating system on my computer and two, that I had done through instructions by telephone. That meant that it could be do so easily! That’s how my story began with Ubuntu in June 2008 : D
Months later I bought an Acer Aspire One that came with Linpus and my next challenge was to install Ubuntu on it. It was a laptop (and not a desktop) and needed a version for netbooks so I tried first to fight with LPIA platform with which I ended up frustrated because after installing it did not work and gave me error. Then it was new to me to download an ISO file to my laptop and also install it throught a USB. I think it was two weeks without my computer, sweating and suffering, but with some help of several friends of the Honduran community I finally had Ubuntu on my Acer. I remember I installed 8.10 version which gave me enough slow problems on my laptop, but when I upgraded to 9.10, I was sooo happy;)
From Ubuntu, I further research, looking and learning how to move in the Ubuntu world. As part of that and then again by MagicFab’s suggestions I learned how to participate via IRC in different communities, to tell my experiences with applications in Ubuntu, I dared to start my own blog for the first time telling my experience with the Ubuntu Desktop Course (elearning), learned to use my blog as a tool through which I can inform others about Ubuntu, participating in lists of the communities I belong and learned how to handle wiki, blueprint and documentation pages to share information to others.
Today I am part of the community and am in several team where I hope to be able to support as I learn from everyone’s experiences too. I am a member in the communities of Ubuntu Honduras, Colombia, Women, Guatemala and El Salvador. Almost daily I am present in IRC channels of Honduras, Colombia and Women getting feedback and contributing wherever I can. I still can not work actively participate in all these media but try to do when I feel more confident about the subject. English is my third language, so I am kind of shy in the ubuntu-women channel.
Today I know that there is Free Software and Ubuntu exists there with all its benefits over other systems. I also know that although I did not study computers, I can handle and learn thousands of things about it and help knowing others that will benefit too.
Today I belong and work hand by hand with others in the Honduras Ubuntu community, promoting Ubuntu in the country, mostly in San Pedro Sula where I currently reside. With the support Fabian gave me, I revived the group that was practically abandoned and we are trying again today to show people of Honduras that Ubuntu is the best choice when it comes to choosing an operating system. Every day I try to learn more and see how I can support other Ubuntu users here and elsewhere. I am very excited to be part of this team and I love to learn and collaborate with this good cause;)
Since I started being part of this community, I had the opportunity to share with others from other distros like Fedora or Debian. There is little that I have experienced them, but for now I’m only interested in Ubuntu.
My name is Elvira Martinez or tatica1 as I I’m known in the community and my main challenge is to convince my daughters and my husband that Ubuntu is the best choice when we talk about operating systems.
***Karen Y. Perez***
When I was a little girl i saw my dad studying computer science to eventually working on projects. Like most little girls I admire my dad more than anyone in the world and I always tried to be just like him. I read many books like him, I begged for my own laptop and fell in love with space. Since then my passion for science, math and technology developed. There were moments where I loved chemistry more than physics and times where math was better than astronomy. But, my passion for computers never faded once. Each year I pleaded my dad to teach me how to program because his code was like a puzzle i need to understand. So, every so often he would teach me bits and pieces but only enough to keep my curiosity afloat and have me do my own research. One day I stumbled across one of my dad’s Unix books in his library. I didn’t really understand much at the time so I tried my very best to read it and eventually I did some research on-line. While doing my research I read about Linux and I saw what the open source revolution was all about. I taught myself as much as I could and I decided to convert my laptop to Linux for the first time in ‘09. Ubuntu has helped me with my studies in computer science and helped me stay open to new things of course including technologies. The last thing a geek needs is to not want to explore outside of the box. I guess you can say I’m a self pro-claimed fem-geek and I couldn’t imagine life any other way. Although, I am no professional yet I do try to talk to other girls and show them how great of an experience using Linux Ubuntu is as well as many other great “geeky” technologies. I hope to one day show young girls that there is more to life than fashion. That you can be as “fashionable” as Barbie and yet be an astronaut.
***Jen Phillips***
Learning to Fly
Some years ago, I used to travel everywhere by bus. The company that ran it was called Microsoft, and I used the Number 3.1. It generally got me where I needed to be, but it took a bit of an odd route to get there, and it would often stop at seemingly random points. If I fancied a change, I could take my walkman, or a book. It wasn’t the most comfortable ride, but it did ok, and I was used to it. After a while, the company decided to upgrade all their busses and change all the routes - and put the fares up. I went onto the Number 95, and everything looked nice and shiny, although I missed my stop a couple of times because I wasn’t used to the route. After a while I realised that although the route didn’t take the same detours, it took new ones, so I didn’t really get where I was going any faster. The busses all seemed to get a bit dingy after a while, too. Still, I had my CD walkman, and it became familiar again.
Eventually, I took the plunge, and got a car. I loved the freedom - I could go where I wanted to go, when I wanted to go. I wasn’t constrained by having to have the right money, and I didn’t have to stop for the sake of everyone else. It was a SuSE, and it was mine and I loved it. Except, any time anything went wrong I had to ask for help. When the radio stopped working, I had to get someone else to fix it. If i couldn’t find a particular stick or button, I had to get someone to show me where it was. It also wouldn’t play any of my old CDs. In short, it was frustrating. I tried a couple of other cars, but they weren’t any better. I took ages getting my Debian to even start, and somehow had a knack for stalling it before I got to the end of the street. Eventually, I gave up and went back to the bus - the XP route now had air conditioning and contoured seats, and I could cope with the delays (and occasional breakdowns) because it did tend to get me there in the end.
Then one day, something quite miraculous happened: someone gave me a pair of wings. In only a couple of lessons, I was flying! I no longer have to wait for the bus, and I don’t need a mechanic to come and rescue me any more. If I want different music, I can just pick up a media player and set it going. If I want to dye my wings a different colour, that’s easy too. I decide which route to take - I’m not even limited by roads any more. The best thing is that flying feels so natural - like walking only better. I call these wings “Ubuntu”.
These story submissions along with all the others are available on the Ubuntu Women Project wiki pages.
Without the efforts of Ubuntu Women Project team member, Melissa Draper, the competition may have never made it to the community, the time and talent she personally put into this competition by drafting the competition as well as writing the voting submission application was awesome! - Thanks Melissa!
It is also important to say thank you to the sponsors of this competition, Rikki Kite, Associate Publisher, Linux Pro and Ubuntu User Magazines, for donating Linux Pro or Ubuntu User Magazine subscriptions (choice of one per winner), to Canonical for donating the Ubuntu Backpacks, notebooks, pens, lanyards, pins and T-shirts, at last but not least to Jono Bacon for making the announcement of the winners as well as for copies of Art of Community.
Again, Congratulations to the winners of the prize packs as well as all those who submitted your person Ubuntu discovery stories. I can’t wait to read the submissions for the 2nd Annual Ubuntu Women Project “How I discovered Ubuntu.” International Women’s Day Competition, so mark your calendars and work on YOUR personal discovery of Ubuntu to help celebrate 100 years of International Women’s Day.
REMINDER: If you or someone you know would like to find out more information about the Ubuntu Women Project there are several ways to do so - website, mailing list, IRC channel(s), and Ubuntu Women Forums
[Discuss the International Women’s Day Competition Winners on the Forum]
Originally sent to the ubuntu-news-team mailing list by Amber Graner on Tue Mar 9 04:46:28 GMT 2010

Every now and again, I come back to looking at device drivers and driver-writing, and I wonder why there is not some common interface for device drivers. What would the world be like if we could write a device driver for Linux, and be able to use it on FreeBSD without modification? There was a project called the Uniform Driver Interface, which aimed to create a common specification (both API and ABI) for drivers such that they could be used portably between operating systems. In other words, a device manufacturer could create a device (say, a SATA chipset) once, and it could then be used by Linux, FreeBSD, NetBSD, OpenBSD, Haiku, Windows, OS X, or any other operating system that chose to implement the UDI specification (or, honestly, any generic, OS-independent driver specification).
The Free Software Foundation objected to UDI for various reasons. Mostly, I think, it was because they were afraid that people who are not them would choose to use drivers that were non-free. As I’ve written about before here, there are people who think that forcing people to use free software is somehow freedom—and I will not go into it in any great depth here, because I have done that in the past. Suffice it to say that forcing anything is not freedom; it cannot be freedom. So, the Free Software Foundation, I think, was really afraid that they would have to do more work to be able to stick to their own requirement of using 100% free software on their own computer systems. (And hey, Roy, if you’re reading—I’m not saying that the FSF is wrong, and I’m not putting myself in a position opposite of that of the FSF. I suspect you think so anyway, but hey, I just figured I would point that out.)
Even if the free software operating systems did not adopt the UDI specification, why didn’t proprietary operating systems? This is perhaps the most puzzling thing to me. It seems that in this event, none of the operating systems—free or proprietary—did what would have made sense. After all, even if only Apple and Microsoft adopted a common device driver specification, that would save a lot of time, effort, and improve user experience all the way around. Apple users would be able to use all the hardware that Microsoft users could use—and the inverse would also be true. The amount of time that device driver authors would have to spend writing and debugging driver code would go way down—free software driver authors would be able to write a driver once, for example, and all systems (including free software systems that chose to support the specification) would benefit.
I could see an objection of a driver specification that was binary-only. However, UDI was not—it mandated an ABI so that drivers that are built for a particular platform were binary-compatible with operating systems on the same platform, but it also mandated an API, so that drivers would be source compatible to any operating system that implemented the specification, on any platform. That by itself would seem to me to be positive motivation to hardware manufacturers to release the source code to drivers so that they can support operating systems that are on platforms that do not exist yet, or have not been considered (or have been considered to be nonviable or unsupported platforms).
So, I have to wonder why a common device driver specification was never implemented in various operating systems. It would seem to be a common sense thing, especially given that there are so many operating systems. It would make the coexistence of operating systems a lot easier, and it would promote choice. It might encourage bits of proprietary code on free software operating systems, but it would also enable people to drop the excuse that “free operating system x does not support device y”, and would as a result potentially increase the number of free software programs and operating systems in use, even if there is a minor cost in terms of certain drivers. And those drivers could always be replaced—a common driver specification would make it easier to understand the structure of drivers generally, and make it easier for lawful, clean-room reverse engineering to be done on those drivers.
Imagine, for example, if drivers for graphics cards, TV tuner cards, video and audio encoding/decoding cards, modems, storage chipsets, motherboard chipsets, USB chipsets, IEEE-1394 chipsets, graphics tablet devices, touch screens, debugging interfaces, network devices, and so forth were all written to a common specification, it would reduce the amount of code which needed testing. It would increase user choice in both hardware and operating systems—something which I still hold is quite likely the most valuable freedom we have. It would increase reliability, since the users of Windows, OS X, Linux, the various BSD systems, and other, not-so-mainstream operating systems would be able to run the same driver code and collectively supply debugging information and perform testing in a multitude of environments. It would increase security, because then common code that is well-known could be used on all platforms and not just the one it was written for. It would do for device drivers what POSIX has done for user-mode application software. I do not believe that I could be convinced that this would be anything other than a good thing.
Also, it could bring back old operating systems. Imagine what life could be like, for example, if OS/2 had a “UDI driver” written for it, and it could then take advantage of newer drivers never intended for it. Or any other very old operating system which is no longer supported and could still be useful, for any of a number of reasons…

Intel and Nokia joint released a new mobile operating system based on Linux. This mobile operating system adds to the already copious fruit salad that comprises the mobile OS market. As much as I have heard about the operating system, it still does not seem to bring anything new to the table. This only begs the question — why?
There seems to be a similar pattern in the mobile operating system market just in the social networking market. In both markets you have your front-runners. Think Apple, RIM, and on the social networking side, Facebook. Then, you have a myriad of random second-rate providers showing up, flooding the market beyond critical mass while all trying to ride off the market leader’s success. Just like in the social networking market, I can only see some of the smaller providers with seemingly no value being killed off by software’s version of natural selection.
Sometimes I think companies and individuals who are trying to create the next big thing, whether it’s a mobile operating system, social networking service, or even another web 2.0 service, perhaps they should stop and think about other opportunities that do not involve an over-saturated market.
Filed under: Intel, Mobile, Nokia, Operating Systems


Google recently lifted the curtains on its soon to be flagship product Google Chrome OS - a heavily customized Operating system which runs on top of the Linux kernel. Google did this with great panache by releasing the source code of the operating system under an open source license. The open source part of the operating system is known as Google Chromium OS.
Since a lot has already been written about the Google Chrome OS, I thought of doing something different. I collected the details of the project and created a mind map providing a birds eye view of Google Chrome OS.
So instead of reading through reams of text, now you need only glance at the following mind map to come upto date on the Google Chrome OS project.
Reference : Google Chromium OS Official Site
Now for some videos on Google Chrome OS.
This video explains to you in plain English about Google Chrome OS.
Explore the Google Chrome OS user interface in this video.
A video on the security aspects of Google Chrome OS.
Chromium OS is the open-source project behind the Google Chrome OS. The following video talks about Google Chromium OS.