One Laptop Update
by Christopher Blizzard
I wrote up a long update on where we are in the software and hardware for the One Laptop per Child project. We’ve gotten a lot done, but I don’t think that’s been communicated to the outside world very well. So, for the first time, here’s an update of where we are. Hopefully I’ll be able to do this on a regular basis.
Kernel
In the One Laptop project we actually have two kernels. The first kernel, found in the BIOS, is based on LinuxBIOS. The second is a kernel that’s built from Red Hat’s sources, and aside from a few patches and a different configuration, is a pretty standard OS kernel.
Over the last few weeks, we’ve been pretty successful in getting LinuxBIOS working on the test-A boards that we have in hand. This has been largely due to work from AMD and from the LB project itself. We’ve managed to get the LB image down to under 1 megabyte to fit into the onboard SPI flash that’s found on the boards. The BIOS itself is supposed to handle operating system re-installs as well as finding and booting from the internal NAND flash that contains the main OS. We haven’t got all of these pieces together yet, but we’re making a lot progress. The BIOS is able to boot from two sources right now:
1. Internal NAND flash. This requires that the BIOS is able to find the NAND flash, read the filesystem and find the boot kernel, load the boot kernel and jump to it.
2. External USB media. This requires being able to find a USB key and boot from it.
We plan on adding two more targets, space allowing. These would allow you to boot and re-install over a USB ethernet device and the other, more interesting one, is to boot off the on-board USB wireless. Re-installs without wires are a big requirement for the places that we’re going to be deploying these laptops.
The main kernel itself is working pretty well. It has a different configuration than our mainline kernels, and includes a driver for the on-board wireless chip. It’s built separately from our mainline kernels, both because we have a different config, but also because we have to have some level of stability while Fedora development has been happening.
Over the upcoming couple of months we’ll be adding support to our kernels for the various hardware components in the machine. These include the new controller to access the onboard flash, the display controller, the camera in the machine and the SD reader that’s also included.
Power Management
One of the main areas that we need to focus on is power usage on the laptop. The ability to use power efficiently and use human power to run the laptops is an important part of the story that we need to be able to tell. A large part of our design work has been in this area. From the innovative display to the display controller, to the choice in using our own BIOS, all of these things have set us up to be able to really control how much power we’re using.
In the BIOS and OS side we haven’t done a lot of work because the hardware has only just now started to come alive, and the BIOS has only now started to run well on the machine. But just as a baseline we have a few measurements. Dave Jones recently measured the baseline power usage of the machine in an idle state (which is what most computers spend most of their time doing) and the board itself was only pulling about 3 watts. This is without the recent tickless patches that were posted to linux kernel and without a lot of the userspace work that also needs to happen to prevent userspace from waking up the kernel on a regular basis.
Additionally, Jim has done some measurements on his iPaq and discovered that the kernel itself – once the hardware and BIOS have gone through their wakeup process – only requires about 10ms of time to start scheduling processes. Once that happens, there are some processes that might need work. In particular, his experience was that cardmgr was doing something that added a huge amount of time after the initial wakeup probably probing ports and whatnot. That will need some examination and work. Our goal is to try and go from suspend to full operation in 100-150ms of time, enough so that a user won’t notice the wakeup. A bold goal, but one that doesn’t seem so out of reach given our current measurements.
In terms of what needs to be done, there are a few areas of work that are currently underway:
In the kernel there are two main areas that will probably have the largest impact. The recent tickless patches and the DCON changes that need to be made to enable the DCON to take over the display and let the kernel sleep. The kernel changes for the DCON are well underway thanks to both David Woodhouse and Jordan Crouse. The tickless patches have been submitted upstream and are under consideration. There’s a lot of interest in those patches from various members of the community so we’re hopeful they will be accepted and have full community support.
In userspace there’s a lot of work that still needs to be done. On the Red Hat side there’s a bug that’s tracking a lot of the user space issues that was created by Arjan at Intel. Some of the patches that he’s submitted to keep userland programs from waking up the kernel have already made their way into the distribution. One change that will probably be of most interest to us is to change the way that python and the glib mainloop interact. Apparently there is a wakeup that happens every 100ms or so. Even with that, Dave Jones also reports that while a normal workstation usually wakes up the kernel about 200 times a second, our current OLPC runtime only wakes it up about 10-15 times a second. Lots of work left to be done, of course, but we’re well on our way already.
The BIOS still needs a lot of work in order to support proper susupend/resume. In normal machines, the BIOS handles the suspend/resume via ACPI interfaces. Our BIOS doesn’t use ACPI and we want something faster than the traditional methods of handling suspend/resume, which are designed around the idea of long-term, non-interactive suspends. The work to identify the various power domains for the kernel is underway now, but the work to actually implement suspend/resume inside the BIOS and the kernel hasn’t been done yet.
X Window System
For the X Window System we have a couple of important software components.
These include a new input driver for the touchpad we’re including in the hardware. This dual mode sensor both is a standard touchpad and also will allow you to use a stylus as a separate input. The input driver for this hardware is underway by a contractor who is working for OLPC. It should land in the x.org tree some time in the 7.2 time frame and we’ll have to carry both 7.2 and those drivers as separate packages.
The display in the hardware is based off of the Geode GX2. One of the folks at AMD has written an EXA driver for the hardware. It hasn’t been wildly optimized, but it’s working pretty well today. Coming up, we have to add support for the “DCON” chip that’s included in the machine. This is the chip that will allow the display to continue to refresh even as the machine is suspended. This work is just getting started today as we are just now getting hardware samples of the DCON chips as well as the LCD displays for the laptop.
Python and related libraries
Most of the UI components we’re building are written in Python, gtk and cairo. Python and the bindings are pretty stable, but we’re interested in some of the features that are included in 2.5. These include some memory management patches (which might not actually make a difference because of the way that memory management works in Linux) and performance increases. Some people have reported some minor problems with Python 2.5, but for the most part the people who have been running the pre-releases have had really good things to say about it. So we’re strongly considering carrying the weight of moving to 2.5 earlier rather than later. To do so, we would also have to drag along a lot of the support libraries that link to python. This includes at the very least glib, gtk and cairo.
Sugar and the UI
One of the largest areas of work that we have underway right now is to put together the user interface and the framework for the laptop. The design work is being headed up by a combination of Walter Bender, a design firm in New York named Pentagram, myself, Bryan Clark and Marco Gritti. We’ve got most of the basic concepts nailed down and much of the basic feel, and now we’re moving on to a lot of the details.
Marco has already started the work to get much of the “home view” in place. This is a screen that both handles activity launching as well as system status. Activities themselves will be all full screen, and switching between them will be done from the home view. Interactions include a framework for sharing and working together that’s available to every program that is running on the machine, including pre-built UI. We also include a context sensitive “frame” that give status and notification information as well as information about who you are working with in a particular activity.
The keyboard on the laptop also reflects the UI that we’re designing. There are special keys on the laptop keyboard that allow you to access functions in the UI. Some of these include a button for the camera, a button to show and hide the frame and a pair of keys to handle scrolling in the UI. (i.e. instead of using scrollbars you can hold down one of these keys and roll across the touchpad and the frame you’re on will scroll.)
Of the work that needs to be done on the laptop, the UI is probably the area that’s still in the most flux, isn’t far along and is the highest risk. The look is different that what people are used to even though we think that it will be pretty intuitive. This is a political and acceptance problem, more than anything else.
Over the next couple of weeks we’ll be putting together a set of design documents and a style guide for building activities for the laptop. This will enable programmers and integrators to know what they have to do to make applications work in the environment and feel of the laptop.
There’s also a strong disconnect between the wiki work that’s going on and the rest of the UI. Discussions over whether or not the wiki should be web based or not are still up for discussion and a lot of the backend database work is being done without an eye towards the visual design – something that risks wasting effort on the backend with features that we don’t intend to use or something that’s implemented in such a way that we can’t do something on the front end we care about.
Crypto and Security
One of the areas that’s under heavy discussion right now is around the use of crypto on the laptop. This includes the use of signing for messages between the laptops and signing of software itself. We have neither made choices about what libraries we want or what the exact role will be for all these bits, but we are exploring the goals for which crypto plays a role.
Also up for review is the use of SELinux or some other related technology. There are technical problems that make it a little bit harder to set up an selinux-enabled system onto jffs2 inside of a chroot envionment (as opposed to using the installer) but we have work arounds for some of those problems.
There’s a security consultant working with One Laptop to identify a set of threats and issues that we need to think about. We’ll have a report from him soon as he’s been talking to everyone and trying to gather their thoughts.
Base Operating System
In the base operating system there’s still a lot of low hanging fruit that needs to be worked out. For example, in order to hit our targets for operating system footprint (100MB of flash used) we need to remove a lot of unused bits from the set of packages we’re including. These include things like the X font server, bitmap-fonts, perl, and lots of other random low-hanging fruit. 100MB might sound like a pretty low number but we’re pretty sure we can make that. We don’t need that much infrastructure in order to support the programs that are on the machine.
Overall performance is good in some areas, poor in others. We haven’t done enough measurement to know about the performance of the UI, nor is there enough code in place to be able to know what the overall performance of the UI will look like. The web browser (gecko) is pokey, but quite usable.
Startup performance is poor because we still serialize startup and there are a lot of services still on the machine that we need to not include. In the end we will probably just fire up the few programs that we need by hand and not use the initscripts infrastructure. It just makes things wildly more complex than they need to be.
The way that Red Hat has udev set up is another problem during startup. We know from the new initrd setup that udev itself will start up very fast – certainly in less than a second – but we have a huge number of udev rules set up in our startup scripts which make this a many-second affair on this hardware.
Networking
Networking is one area where we have both good and bad news. The wireless driver has been under development by Marcelo and Marvell. The driver hasn’t been submitted for upstream because it’s not ready yet, but it does appear to work reasonably well. Also, we have working firmware from Marvell that seems to work well but we don’t have the source code to that firmware yet.
We haven’t spent much time working on network scaling nor the various ways that we will be configuring networking on the laptop. The driver hasn’t been fixed to work with NetworkManager (although Dan says that the work would take “just a day”), nor has NM itself even been ported over to what we have on the laptop. In addition, we will need a new front end to NM or change nm-applet to support the environment on the laptop.
Our strategy for scaling through the use of services (backed by jabber) hasn’t been fleshed out yet, either. Although we can wait to do this work later in the schedule, design and resource work for this needs to happen at some point.
One of the key points for our plans also include working with IPv6. Although we know that the support in the OS that we’re using is pretty good, we haven’t spent a lot of time trying to get the code that we have working on top of IPv6 yet. Nor have we actually converted our internal development networks to support it.
Internationalization and Translations
Our strategy for creating builds for various countries is pretty simple: we want to make sure that translations and code are as centralized as possible, but we want to be able to make per-country builds to enable localized builds possible. We have much of the latter part of the infrastructure in place – it should be possible to make localized builds – but we have yet to have a country to try it with.
The first part – centralized code and translations – is just a goal, and it will stay that way. We know that a lot of people will maintain their own translations and we will encourage them to submit them for inclusion, but our infrastructure is such that it will be able to translate activities on the laptop and install translations after the fact.
I think the work on OLPC is just great! Keep up the good work, and keep the status updates coming.
Regarding networking, has there been any progress on the higher levels
of the stack, particularly mesh routing, tolerance of highly dynamic
topology and node outages?
How many of these changes you’re making do you expect to be useful for “ordinary” machines, and fed back to upstream?
I think it is seriously hypocritical for OLPC to be heading towards Linux BIOS (goal: to not run vendor code) while at the same time they go signing NDA’s with Marvell for the wireless driver (goal: to run vendor code), and then won’t participate with other groups who want Marvell to release documentation for their wireless chips.
So perhaps we can presume that the use of Linux BIOS is not because of free software or open source ideals, but just to have good control of the machine and its battery. Because if the ideals of freedom mattered, there would be no agreement from the OLPC group with the most closed company in the wireless industry — Marvell.
So while OpenBSD is increasingly reverse engineering more and more chips, and pressuring more and more vendors to get chipset documentation and firmware files released (ie. at least distribution rights), along comes Red Hat and MIT associated people, and they make AGREEMENTS with one of the last three secretive wireless chipset vendors! And now Marvell can become even more secretive, and won’t give us any information or a redistribution license for the firmware. Heck, Marvell won’t even talk to us now.
So the idealists of Linux says that everything should be free, but is Linux shipping from any distributor with drivers for TI ACX100/ACX111, Cisco/Aironet, Atheros (even the USB ones), Atmel, ADMtek, Baystack, Intel (all 3 types), Prism GT, all Ralink products, and other chipsets too? There are people in the Linux community who rail against the user community increasingly using binary drivers (ie. Windows ndis drivers), but if OLPC makes such agreements, how can you be surprised at the increased use of Windows ndis drivers? These agreements DE-POWER the driver development community.
One group is trying to get those things reverse engineered, and along comes Red Hat and other supposed Linux “idealists”, to stand in our way. OpenBSD now has documentation or work in progress for almost all chips (the main outliers beingMarvell and Broadcom)… and whamo, people involved in the Linux community .. whamo with the signing of an NDA… eliminate any way to pressure the vendor with “yours is the last chip not supported by any free software”. And it’s not just an NDA that is being signed… Marvell is writing a custom firmware for OLPC, and how will all of us benefit? Not at all.
Are these the classic Linux ideals, right? Or is this just the business, and a policy of “whatever it takes to ship on time” beating ideals, right?
The mesh routing actually happens down at Layer 2. What the kernel sees looks just like wireless or ethernet. The logic is all down on the card. There’s been work in that area, to be sure, largely on Marvell’s part.
The code for the driver for the Marvell chip is available under the GPL and can be found in our recent kernels. (It’s not upstream yet.) We will have an agreement with Marvell that will allow for redistribution of the firmware.
Sounds like there’s some dedicated and smart people working on this and that you’re heading in the right direction–kudos.
Some of those engaged in the Windows vs. Linux vs. OS X debate make a lot of hay about how Apple has control over the hardware platform and is therefore able to succeed in delivering an overall more polished product. It seems clear that your project is not just building cheap laptops, but is really paying attention to the kinds of details that will make for a polished, coherent product. As a geek and computer-lover, there’s a part of me that wants an OLPC for me!
So, once you’re done developing these, how about starting up a buddy program whereby geeks get to buy OLPCs at a 100% markup which you can then use to finance an OLPC for yet another child?
You have code from Marvell. But no docs. If there is a bug, noone
can fix it.
The code is only for USB, and only for one of the chips that Marvell
makes.
So PCI, Cardbus, SDIO chips do not count. Nor do their previous generation.
So you have an agreement to permit distribution of the firmware they write for
you. But will it cover other firmwares? Or just that one?
Sorry, but o matter what you say, the process is not free, and the process is not
open. The process stinks. Especially when it removes our power to lobby vendors to ACTUALLY BE OPEN.
I’m not sure how working with Marvell to open code on one of their chips affects your ability to work with them one way or another. If anything, it gets them more comfortable with the processes around open source development and takes the first step to making it OK for them to have code out there, even if it’s for one card.
These things aren’t zero-sum. I can’t see how our success with them makes your job any harder.
You mentioned the graphics card will have an EXA-enabled driver — does this mean that it might do drop shadows, menu fading, and window transparency? If so, is there any way to get this graphics card in normal laptops or desktops?
The GX2 does have an alpha channel, and I think that we do have support in the EXA driver for it. But it’s not the kind of thing that will probably make its way into desktop machines. The board in the laptop isn’t the fastest thing in the world, and most desktops have more firepower today than it does. AMD will be closing on ATI some time soon. That makes for much more interesting times.
Regarding “one for me and one for you” programs, we’re certainly talking about doing those kinds of things with the One Laptop program. Once we have actual laptops we’ll have something like that in place.
Hopefully all hardware support (sans wireless, not that it would be bad to have support for) will be in the main kernel by the time this comes out, and normally light distros will start including it. I’ve yet to read anything that indicates the included software will be enjoyable to use; but the hardware is certainly compelling.
Theo de Raadt: Windows obviously wouldn’t work, OS X would be equally silly, and Red Hat was willing to put actual people into the development of it. It had nothing to do with FOSS idealism from the start–that’s the job of other OSes that decide to attempt supporting the hardware, because they do it due to believing it should be done, or out of an inner need to do it, without too much else in the way of political or economic motivations and intanglements.
Although the one laptop per child idea seems great since it allows for developing countries to get their hands on technology, I would rather see time and money being spent on reducing the level of poverty in developing countries. Being South African, I know full well that it is more important than giving each child a laptop. After all, a laptop may keep them warm at night, but food, shelter and a proper education will keep them alive.
That said, I still like the idea of the project and keep up the good work. Hopefully one day the politicians will stop being corrupt and start looking after their own people so the above paragraph doesn’t need to be said.
I wonder why you guys chose Gecko as browser component? using WebCore or Khtml would lower memory requirements and speed things up – isn’t that a big thing? same with gtk over Qt4, but i guess that’s mostly a ‘i prefer to work with this’ thing from the developers…
This is a great update thanks!
I didn’t notice a link posted to the OLPC mailing lists?
[...] Lo último de lo último sobre el proyecto OLPC lo cuenta Christopher Blizzard en su blog En: olpc, Asides — Septiembre 27, 2006 [...]
We hope to have most of the drivers upstream by the time we’re in production, too. The wireless driver is the largest amount of work and it’s well underway. We’ll get it upstream when it’s ready to be upstream.
Regarding the “food not laptops” issue, it’s important to realize that we’re talking about different things. We’re interested in promoting learning, and the tools for learning. The laptop is only part of the picture. As I said earlier about a different topic, this is another thing that isn’t zero-sum. We should be doing both.
Regarding the browser component, we’re still open to using Webcore instead of Gecko. In fact, I would love to have a bakeoff, as long as the bakeoff were set with the right parameters.
But I’ll say two specific things about webcore:
1. Your assertion that it’s less memory intensive is not correct. According to the webcore developers, the code size is smaller, but the actually memory usage on many pages is much higher. They trade more memory at runtime for code size. And we have more space on disk than we do in memory.
2. Webcore is not as compatible with the rest of the web as Gecko is. The experience it provides is just not as good, and that’s important to us.
Hey, why are you guys obsessed in using Python in your distribution? Why not Use Lua for your tools. It is small, fast and it can be embedded in binaries so a new releases won’t necessarely break core component.
Heck, even the DSL distribution is only 50MB! (They have an extended one with 100Mb I think).
Strange way to build a small system….
It’s a small system, but it’s not _that_ small. Python is a good scripting language, it’s bound to everything, it’s widely understood and used by lots of people, finding docs and support is easy and it’s a good teaching language for kids. Python is a great fit.
I’m curious if a bakeoff between Perl and Python would be considered. I’m guessing that developer preference, and the state risk and flux in UI development would suggest not.
I’m sure it is a problem that has been solved before, but it has got to be easier to yank Python from a linux distribution than Perl.
Hopefully the OLTP won’t be wedded to Python. However I can understand that Python 2.5 is here now and Perl6 isn’t. OLTP sounds like the type of project that could benefit from Perl6. And I’m sure Perl6 could benefit from having a platform on which to concentrate its efforts to improve support for embedded systems.
I’ve read that the Mozilla Foundation has been looking for ways to support Perl6 deveopment. It’d be nice if it considered funding development for a Perl6/Python OLTP bakeoff.
Improving startup time needs some more advanced init system than a traditional SysV init can bring us. For example Ubuntu’s upstart (new in development version of Ubuntu) or sure, you can find other similar projects, as well.
[...] Christopher Blizzard (flashy name dude!) ne vorbeşte despre câteva dedesubturi ale proiectului One Laptop per Child care doreşte să lanseze în mod oficial, în curând, laptopul de 100$ (una sută dolari). Cred că ştie deja toată lumea că laptopul respectiv rulează Linux aşa că nu vă mai spun şi eu. Chestia e că are două kerneluri: unul în BIOS, bazat pe LinuxBIOS, şi altul construit din sursele RedHat… Eu nu înţeleg o fază: ce are sursa dată de RedHat şi nu are cea oficială de pe kernel.org? Printre alte specificaţii se mai numără NAND flash intern, USB extern, wireless şi multe alte chestii interesante. Very nice read… Sursa [...]
We’re not going to bakeoff perl vs. python. Python is better supported in the GNOME community and it’s what we’re familiar with. It’s also the kind of thing that can’t just be dropped in from space. We would have to change everything to support it. Gecko vs. Webcore we can choose a bit later.
Regarding startup, we’re certainly interested in alternatives. In addition to looking at Upstart we’re also considering ditching both entirely and just starting up the stuff we know we need. Limited hardware and software lets us do that.
Is it possible to incorporate a solar panel to assist in charging these battery’s? It’s my understanding that the majority of these machines will be heading to impoverished countrys where electricity is either scarce or intermittent, if so Schools would allready be using the sun to light the classrooms, thus could also charge the batterys. Putting two 2″ sq panels on the lids of the systems could generate enough power to assist in charging and a small charge diode to prevent drain could easily be attached. Also what type of battery’s are being used?
If anything I’d like to assist in the hardware side. I have been keeping tabs on this project for years now and it seems to me that alot of brilliant ideas, or ideas that come to my mind instantly aren’t even being approached.
Best of luck!
-Todd
[...] Leitura obrigatória: Christopher Blizzard » Blog Archive » One Laptop Update [...]
[...] Christopher Blizzard publica una completa actualización del estado del desarrollo del BIOS, kernel del sistema operativo, sistema de gestión de energía, interface de usuario, seguridad, conectividad y la internación dentro del proyecto OLPC. Entre las características que menciona Christoper se destacan la posibilidad de bootear y reinstalar el SO de modo inalámbrico a través de WiFi y una fuerte integración entre la interface de usuario y el teclado que no se ve en las laptops tradicionales ni en las UMPCs. [...]
A Blizzard of OLPC Development Progress
While Walter Bender’s One Laptop Per Child weekly newsletters are becoming more technical as the 2B1 Children’s Machine development moves along, Christopher Blizzard has taken it upon himself to give a very detailed update on the OLPC software and ha…
Why use a button and touchpad combination to do scrolling?
“(i.e. instead of using scrollbars you can hold down one of these keys and roll across the touchpad and the frame you’re on will scroll.)”
I have used touchpad solutions where 2 fingers instead of one scrolls the display (horizontal and vertical directions supported).
Thanks,
H
I notice you phrased your comment about the Marvell firmware quite carefully:
“We will have an agreement with Marvell that will allow for redistribution of the firmware.”
Redistribution of the binary firmware, or redistribution of its source code?
What kind of educational software you plan to include. Are you considering GCompris?
It seems to me that the presence of laptops in certain areas could be a financial asset in itself. There are companies (such as http://www.worldwiseeducation.com/) which aim to fund education through normal school activities. I can’t help but think utilizing these laptops in a similar way could help to offset the deployment costs and address poverty in the areas they are distributed to.
Thanks for the update and keep up the great work!
Typo, third paragraph:
This has been largely due to from from AMD
Wow, the OLPC project seems really cool, I love the fact that you are breaking things all the way down in order to “do it right”. I would love to check this thing out once it is finished, you should have a website where adults that are interested can purchase one to help fund for more children’s laptop’s. I’d buy one!
Anyhow, keep up the great work!
I, for one, am very happy with the Python choice. I think it’s a great tool for teaching and has a lot of interesting libraries for math and graphics (I’m thinking of NumPy and Matplotlib, specifically). Although the startup time for Python is a little heavy (at least compared to, say, Lua) – since Python is running all the time most of the libraries should already be in memory, so it’s already been amortized. I’ve used both Perl and Lua and would much rather program in Python.
[...] Una muy buena actualización de los adelantos del proyecto One Laptop per Child. En inglés, pero muy bueno. [...]
[...] Christopher Blizzard wrote up a long update on where they are in the software and hardware for the Linux-based OLPC project. They’ve gotten a lot done, but he doesn’t think that’s been communicated to the outside world very well. So, for the first time, here’s an update of where they are. Hopefully he’ll be able to do this on a regular basis.read more | digg story Related Articles: The Mind/Body Connection and the Changing Fashions in the Treatment of Abnormal PsychologyCurrently, it is fashionable to treat mental disease with drugs. Many clinicians treat abnormal psychological states as if they were…Legalizing Marijuana – A New Republican Strategy?The Republican Party has a new voter registration project in Fresno. It involves luring people to sign a LEGALIZE MARIJUANA…MIT tool aids cost estimates for complex projectsNew, first-of-its-kind systems engineering cost-estimation model developed by an MIT researcher can ensure that the bid is right on target,…Step-by-Step Beginners Guide to Project ManagementIt’s all about very simple questions; what, where, who, how, when, how much, and fixing specific dates and commitments from…The Future On The HorizonThe DOW drops below 11,000 for the first time in a few months. Housing prices continue to fall a bit…. [...]
twsinit (http://www.energymech.net/users/proton/) uses only 8K of memory – might be worth your time.
Richard Gooch has also done some interesting work with startup scripts – see http://www.atnf.csiro.au/people/rgooch/linux/boot-scripts/ and skip on down to the “new scheme” section of the page where he describes the need() system.
Dr. Berstein’s daemon tools are probably more complex than you want – though no more so than SysV init, really – but they are worth study because Dan has written a pretty thorough analysis of the shortcomings of existing systems and ways solutions can be approached – see http://cr.yp.to/daemontools.html
Hmmm, whilst searching for djb’s page address I stumbled on a small list of alternative startup schemes – it’s here: http://recycle.lbl.gov/~ldoolitt/foundations.html at the top of the page.
Regarding the solar power, that’s one of the possible power sources. Still, we’re targeting human power, not solar as our primary means, along with car batteries and A/C. Basically anywhere we can get it. The board inside of the laptop will actually accept a wide variety of DC power inputs and the battery we’ve picked is happy with pretty much any electron source you can throw at it (as opposed to most batteries found in laptops today that are quite sensitive to the voltage of the power in question.)
Regarding the binary firmware, yes, at this point we just have binary firmware.
And with regards to the software, we’re not really building educational software for the laptop. We don’t consider it our job, we’re just building the basic tools to let those kinds of things flourish. And you can imagine that with an install base in the millions that that kind of software is likely to pop up for sale.
Very interesting project, I’ve been following it for more than a year now, but I was always frustrated at the lack of details.
I am also interested to buy one when it comes out, it is excellent for traveling: lighweight, small power consumtion, big screen, big keyboard (compared to a PDA), WiFi..
I have a few questions though:
1. Will it be possible to run other applications on it? I mean software that is already made and works on normal Linux systems.
My guess would be no, due to the different GUI and the lack of a lot of libraries.
2. How easy would it be for the developers to write software for it?
3. Any 3d hardware acceleration? Will OpenGL be included?
4. How easy would it be to upgrade it, especially the onboard flash disk? 512MB is not that much, and by the time the OLPC project is finished, 4GB of CF will proably be under 100 USD, so sticking a CD or SD card in it to increase it’s internal memory will be a nice idea. Yes, it has a SD interface, but I was thinking more of internal memory, where you put it there and still have a free SD slot to use for stuff like exchanging files.
5. Will the RAM be upgradable, or just soldered on the MB?
Sorry for so many questions :)
Oh .. Redhat are involved? Then it’s BROKEN.
Please not to use SELinux, this makes it impossible for any user or sysadmin to audit their system, or to use 99.999% of documentation for *n*x software.
In fact, SELinux makes it not unix-like software any more. It is a permissions structure which is completely orthoganol to the simple, successful, and proven unix rwx ugo permissions which have stood the test of time for 40 years or so. Why do you think unix can trivially be made secure and functional, and windows substantially not? Why is it that unix systems can be adapted easily and reliably, and windows not?
So you may as well use RISCOS or something if you are using that SELinux crap. Please Please Please Please Please no more SELinux polluting the *n*x world. Keep it for your NSA super sekrit servers or whatever it is you Redhat people think you’re selling.
Get Redhat out of this, use some truly open software which follows simple unix traditions (there are a number of these, I will not point to them), and I guarantee you can develop this system in 1/2 the time.
Thanks in advance, you are doing a lovely job.
I’m glad to see that localization/translation is still on the agenda. I’m always surprised that the number of interventions I see aiming at this market which place localization as a phase 2 concept or ignore it completely. Glad to see that its in, even if its at the bottom ;)
You mentioned centraised translation. Please don’t go that route. Unless by centralised you mean one place where a person can go to localise. Which is very different from all localisations are central. Their is a very well established and distributed localisation community, centralising their work just makes their work so much harder and ends up with localisations that are not upstreamed.
I would recommend that you look seriously at Pootle which is a tool that allows teams to create a distributed localisation environment. After all now that we see so many distributed version control systems, isn’t that the correct way to approach localization: distributed yet with the ability to have a centralised view. So for intance OpenOffice.org, GNOME, etc have their own systems yet a OLPC view is merely a slave of these translations. Allowing a translator to translate centrally for OLPC without having to know how to interact with each localisation community. OLPC benefits from upstram changes and can upstream their own changes automatically.
I’d recommend that you look at http://pootle.wordforge.org and http://www.wordforge.org to see what we’re up to and how that could help both OLPC and the localization community.
I think the comments from Theo where somehow unclear (if not aggressive) and therefore now well acknowledged.
What he wanted to say, I think, is that the only remaining way to pressure recalcitrant, anti free software companies (like Broadcom and Marvell), the only words that they seems to understand, is to face them explicitly with a “You don’t play the game well, so no big contacts for you”, or “So you want to sell us billions of your chipset units ? then here are our rules”.
Then the next time, hopefully, they’ll be more prudent before alleging “free software OS are marginal, we have nothing to win by opening the specs”. Beside, that’d be a way to cheer better players (like Ralink and ZyDas) on this very sensitive area.
It should be noted, also, that source code drivers (even GPL) from companies written under NDA (and without releasing specs/docos) are better than nothing, but are not, by far, the best option we have, nor the one to cheer up :
* That’s bad for our independence : it makes harder to fix the drivers bugs (even when Marvell will have more interests to sell us a new product), and makes it very difficult to do changes on the kernel infrastructure (this is a real problem regarding the wireless stack, btw, that evolving very fast) because of unmaintainable drivers.
* That’s kind of betrayal, making things harder for those who want to get more from vendors. When Theo was starting to lobby against wireless chipset vendors, some years ago, he reported the kind of answer he received from some vendors : “You don’t want binary etc. drivers ? You dumb, our proposition is linux/opensource friendly, proof is that some distros -Mandriva, Suse,…- accepted our agreements. So you won’t get better”. Then : contrary to what Blizzard said above, accepting this is really getting on the way of others fighting for drivers freedom.
* That’s no use for other free operating systems. This is why Theo wake up here, I guess, there’s no chance now that Marvell would do better if Linux community is willing to accept this, because for them FreeBSD, NetBSD, OpenBSD, OpenSolaris count for nothing.
* That’s a very bad case for the vendor balancing about the good position to adopt with us : how could they think they have better to free the docs when those who did this aren’t selected for big contacts ?
Anyway, this is a specific if not minor issue : thanks a lot, thousand times, for all the work, both in kernel and userland, with OLPC !
1. Will it be possible to run other applications on it? I mean software that is already made and works on normal Linux systems. My guess would be no, due to the different GUI and the lack of a lot of libraries.
It still uses the X Window System and has a window manager. You can run other apps, but some of them look odd. I fired up a random app the other day but it was a single window app and didn’t have any dialogs. An app like the gimp is going to be much harder, though. It fires up with several little windows which would be spread out all over the place.
2. How easy would it be for the developers to write software for it?
It’s very easy. The only differences will be that if you need libraries outside of the base system that you will have to include them as part of your app, not just pull them into the base system. With our target of keeping the OS under 100MB of on-flash footprint (which is quite doable, it turns out) it’s important to keep things small and simple.
3. Any 3d hardware acceleration? Will OpenGL be included?
We don’t have any 3d acceleration, no. We’re still discussion if we want to include it or not. Some apps might want to use it, but it’s going to be really slow if they do. This is not a 3d machine.
4. How easy would it be to upgrade it, especially the onboard flash disk? 512MB is not that much, and by the time the OLPC project is finished, 4GB of CF will proably be under 100 USD, so sticking a CD or SD card in it to increase it’s internal memory will be a nice idea. Yes, it has a SD interface, but I was thinking more of internal memory, where you put it there and still have a free SD slot to use for stuff like exchanging files.
It’s possible to take the machine apart and physicall update the RAM and the Flash if you choose. But those parts aren’t socketed, they are soldered to the board so it means getting out your soldering iron and taking things off the board. So your best bet for expansion of the storage of the device is to use the SD card reader.
5. Will the RAM be upgradable, or just soldered on the MB?
It’s soldered.
A couple more comments:
Regarding SELinux, we’re looking at it. It might have a role to play here. Our filesystem supports the requisite attributes. But as for your assertion that any changes from the old unix model are bad, well, I disagree. If we’re never willing to change away from the models of old and learn and change then we’ll never be anything other than what someone laid out many years ago. We can make improvements and we can make changes and adapt to new threats and new enviornments and needs. SELinux is one example of that: the ability to work in an environment where data security is very important.
That’s a different question than whether or not we should be using it in One Laptop. It’s still something that we’re looking at.
Regarding the centralized translations, I’ve got a personal mantra that I try to stick to: “decentralized development with centralized information.” That is, let the development happen wherever but make it as easy as possible for anyone to get involved anywhere and do the work in the environment where they need to.
In practical terms what that means is that I want to have our translations done so that anyone can do it anywhere and can, if need be, apply translations after the fact. But I also would encourage them to make those translations available in a centralized location whenever possible.
Regarding benpi’s comments about freedom and the wireless vendors: point well taken. I will say two things about this, and that will be it from my end:
1. He’s understating our relationship with Marvell and assumes that what we’re able to do today is all we’ll ever be able to do (source code availibility, firmware source code, docs, etc.) We are very committed to making an open hardware platform and Marvell is part of that. I’m not making promises here but his assertion seems to be that we’re ignorant or that we’re not thinking about the whole picture around freedom. We are thinking about that, every day.
2. This experience with Marvell puts us in a better position with them than ignoring them completely. The best way to educate someone is to spend time with them, build a level of trust and understanding and bring them into the fold. And that’s just what we’re doing here.
So does OLPC working with Marvell make things better? I think so, or I wouldn’t be spending my time with them. But does it give Theo everything he wants or completely solve the problem today? No, it doesn’t. But it at least puts us on the path to getting there.
This project is great! There are so many positive things that can come from its success. I can not wait to be able to get these machines for my two daughters.
[...] Check out what Chris Blizzard has to say about its progress so far. [...]