OLPC Idea Pool: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
 
(40 intermediate revisions by 16 users not shown)
Line 1: Line 1:
#REDIRECT [[:Category:Feedback]]
Maybe this should be split into individual sub-pages? ([[User:Vorburger|Vorburger]] 20:06, 9 February 2006 (EST))

== Software Ideas ==

=== System Software ===

==== Peer To Peer Distribution, for Electronic Text, Software, Email ====

Extending the original idea from below... this is more general then just about electronic text, though. In lack of a better term, let me call it "built-in support for non-real-time Internet connectivity", provided as shared service and usable by apps.

For example, I myself often read some web pages that I had downloaded while on the network at home while traveling, disconnected from a network, and of course when clicking on a link you get some stupid technical error message. Why can't the thing remember I want to read the linked page later and "queue" it somewhere? This idea is probably more much more relevant in some OLPC scenarios than it is for myself; what if you are connected to the "Internet by Motorbike" say only once every two weeks, as in the Motoman project in Cambodia?

This applies to many forms of data, from electronic content be it a complete ebook, HTML page, Email or some software to download - or publishing of content such as homepage or blog updates, etc. (I think [http://www.oneworld.net/ OneWorld] has an XML-based publishing along those lines; but could be confusing it with something else.) Making it possible (and easy!) to request, and publish, data from one device, which then forwards the reqest to another, and ultimately forward to Internet when connected. Doesn't it make you feel like good ol' FIDO Net is back?

[[User:Vorburger|Vorburger]] 20:06, 9 February 2006 (EST)

I believe one of the most useful purposes of the laptop will be to distribute electronic text (i.e. e-books). The distribution of any information without a persistent network connection will be difficult.
I imagine a situation where 1 out of 100 or 1000 kids may have access to a network connection. The peer to peer network could be used to distribute e-books from that single network connection to 1000 kids. I'd like to propose the design of a peer-to-peer network client designed specifically for this purpose.

A simple, graphical language-localized client would be designed to present a catalog of e-books. The client would pull down a listing of books available in a certain age-range for a targeted language. The student would pick texts that he or she has interest in. This list of requests would consist of a very small packet of data, perhaps a unique identifier of the device and a unique identifier of the text. When the device sees another device, it would off load it's packet to the peer device and vice-versa. Each device would contain a listing of requests from all of the peers that it came in contact with. The next time a device connects to the Internet, it would pull as many texts as allowable by pre-defined memory limits (say 3-5 meg). As the device comes into contact with other devices, it would deliver the texts to the other devices. Hopefully, over time, the requestor would be delivered some of the texts originally requested. As each text is delivered, a delivery or cancellation notice would be sent back through the peer network.

The peer to peer network should gather performance intelligence over time. It should be able to guess which routes have better chances of making a request and returning a delivery.

If a proof of concept proves to work well, the peer to peer network would be extended to handle two-way communication for interaction such as email or the submission and grading of assignments.

--[[User:65.7.133.163|65.7.133.163]] 04:41, 27 January 2006 (EST) Jason Hoekstra - jason@solexinc.com

==== Distributed Filesystem? ====

Will the Wikipedia Offline fit into 512 MB (or even 1 GB) ? Even if it does, how about some software and other textbooks loaded at the same time? Clearly, the storage on one device is very limited... but: What if data could be spread over several laptops, a sort of built-in distributed filesystem like [http://www.coda.cs.cmu.edu/ Coda] or [http://www.danga.com/mogilefs/ MogileFS] - do these make any sense on a device like this, with the goal of enhancing storage capacity through distribution? In a school, every of say 100 children has 1/100th of Wikipedia - instead of clogging each device with a complete copy.

[[User:Vorburger|Vorburger]] 20:06, 9 February 2006 (EST)
.
==== Better-performing Flash Filesystem ====

The proposed JFFS2 filesystem was designed for NOR-type Flash memory, which has very different timing characteristics from the cheaper NAND-type Flash memory used in USB thumb drives and, presumably, the laptop. YAFFS is a GPL'ed open-source journalling filesystem designed specifically for NAND Flash memory that is claimed to use less RAM for its tables and generally outperform JFFS2, and they are working on YAFFS2, which is tweaked to be faster and to work with the new larger, 2KB-page-size NAND devices.

YAFFS has the following technical advantages over JFFS2:
* It uses NAND Flash memory better, making it faster (about 2X), more space-efficient and wearing the memory chips out less quickly
* It is faster at mounting a filesystem: a hand-waving example of startup time for a 128MB device is 3 seconds instead of 25
* It uses far less RAM for its internal tables
* It scales better: JFFS2 is said to fall apart above 256MB because its internal data structures get too big while YAFFS is known to work well up to 2GB (the laptop currently aims at 512MB)
* It stores error-correcting codes for all data, which is essential since NAND Flash is supplied not 100% perfect and degrades over time
* YAFFS provides some features lacking from JFFS2 (hard links, memory mapped file writing)

JFFS2 has the following advantages over YAFFS:
* It has built-in write-time data compression
* It is included in the standard Linux kernel

YAFFS has a [http://www.aleph1.co.uk/yaffs/ home page] and a there is [http://www.aleph1.co.uk/yaffs/jffs2_and_nand.html a technical article] which goes into depth on the differences between NOR and NAND flash memory and the drawbacks of using JFFS2 with the NAND type.

It would be worth running comparative performance tests on the two filesystems, because there are big potential performance wins on several fronts. In-filesystem compression isn't everything, slows all file operations down and, when used without error correcting codes onto an unreliable medium, risks major data loss.

[[User:Martinwguy|Martin Guy]] 4 March 2006

==== 3d software rendering ====
As the system does not include hardware accelerated 3d rendering, a software rendering library may be included to wrap the OpenGL (OGL/ES maybe) API and create rendering code on the fly. This, even on a machine with limited clock speed can provide a rendering performance paragonable to that of some integrated 3d chipsets, especially if the resolution is kept low. There are some existing tools that can be leveraged for this; for example, [http://sourceforge.net/projects/ogl-es Vincent] is an OpenGL/ES implementation that provides software rendering for constrained devices like cell phones; SwShader, precursor of transgamings' [http://www.transgaming.com/swiftshader.php SwiftShader] and many others. Having (limited) OpenGL capability does add some capabilities to the device without requiring additional hardware.

==== Software Installation, Package Manager, Central Repository ====

How relevant is a polished end-user friendly Package Manager? With limited memory, are you more likely to uninstall and try another application and install back one? In the beginning, how important is it to be able to very easily get patched new versions of the software? Underlying question: Is a central repository of applications desirable? Completely open, anybody can submit their (pre-compiled) package?

[[User:Vorburger|Vorburger]]

Should there be an easy way to install and remove applications from the device without corrupting the system image? I am thinking of something like klik (http://klik.atekon.de/). -- [[User:DPalmerJr|DPalmerJr]]

==== Laptop as USB-Drive ====

It would probably be useful if the laptop could be accessed as a USB-Drive, like a digital camera.. In the Software Development context hackers could probably also configure File Sharing via the WiFi... but simple "USB cross cabling" could be interesting to end-users because it's: a) most simple, b) secure, probably OK to give access to entire filesystem, if locally attached, c) doesn't need Wifi; the nearest Internet Cafe in a bigger town will let children/teacher USB-connect their laptop to one of their stations to copy over a newly downloaded application, but not have a Wifi basestation; at least not where I have travelled in India.

[[User:Vorburger|Vorburger]]

==== Hard-Reset built-in ====

Curious kids will certainly easily manage to screw up the software side of the device - and they should! A built-in hard-reset that can re-initialize the OS etc. from ROM; sort of like some modern laptops have a hidden partition on the HDD that can re-install without the usual Recovery CD, could be useful.

You always have the problem of personal data, files, and configuration settings. Some solution for that would have to be provided; e.g. easily copy to your friend's device over the wireless network?

[[User:Vorburger|Vorburger]]

=== End-user Application-level Software ===

==== VOIP ====

Availability of a well-working SIP-based VOIP client on this device could prove popular (when when always-on connectivity and sufficient bandwidth is available through the set up of some satellite IP link in a remote region) [[User:Vorburger|Vorburger]]

==== Recording & Sending Voice Messages ====

Recording and subsequently listening to voice messages - this is not very big in "our" world, other than the voice mail on your phone; few people seem to record and attach voice messages to typed emails. But if you don't have phones at all, and no always-on for VOIP, maybe recording a voice clip and sending it could prove to be a popular usage - particularly for the parents of the kid that the laptop belongs to, who may be unable to read and write much?

[[User:Vorburger|Vorburger]]

===Education===
====Logo====
Seymourt Papert developed a lot of work around teaching kids programming. What could an updated version of Logo be? ...maybe logo scripting for kids (instead of php or java) :-)

====ViOS-like information indexing system====

In early 2001 I saw an illustrated post in the alt.binaries.education.distance newsgroup about the ViOS system.

The system offered a third party view virtual world 3d landscape as a way of indexing the web.

A description remains on the web.

http://www.howstuffworks.com/vios1.htm

There are also some notes on ViOS in the following document,

http://jlombardi.blogspot.com/2004_10_01_jlombardi_archive.html

I wonder if I may please suggest that the ViOS look is worth considering as a way of indexing information sources for the users of the $100 laptop.

It might perhaps be possible to have the display done by a relatively small program and the data in blocks which could be fetched from a server as needed.

William Overington

9 March 2006

====The "ready-to-test" concept====

In February 2002 I wrote the following.

http://www.users.globalnet.co.uk/~ngo/ast02800.htm

This was one of a series of documents indexed at the following web page, though the others in the series are on different topics, so the above document is complete in itself.

http://www.users.globalnet.co.uk/~ngo/ast00000.htm

I do not know if the idea would be of any use to the laptop project but I am thinking that it might be, so I thought that I would post the idea here in the hope that it could be assessed by the experts.

William Overington

10 March 2006

== Hardware Ideas ==

Ideas that we'll require changes, or additional, hardware:

=== Broadcast texts over shortwave radio ===
A major challenge is providing access to information through the green machine.
Access to the Internet in most of the regions of the world where children will benefit
from the OLPC program is usually limited. Here's a hardware+software idea that could make access to information truly ubiquitous. It goes for _access_ as opposed to ''speed''. The idea works synergistically with other ideas such as Jason's idea for p2p distribution of texts and mesh network access to the Internet.

'''Rationale:'''
I see the green machine as (1) a tool for accessing information and (2) a tool for self-driven learning through investigation. A problem with the former role is "from whence cometh the information ?". With the limited storage resources, "pre-loading" the information on the machines seems like an untenable approach.
The crux of this proposal is that having ''easy and reliable'' access to a small library of information will be more useful than having spotty access to the entire Internet, even through mesh networking. The idea focuses on access to information, rather than access to the Internet, the latter and Information not always being synonymous.

'''Idea:'''
Broadcast texts over shortwave radio. Have the texts broken up into
chunks, and all the texts from a library interleaved in time. If possible, transmit different interleaving sequences on a set of different channels. The basic
circuitry for a shortwave radio demodulator can be very simple, particularly if
the decoding is done in software sitting behind a straightforward RF and analog front-end. When a child wants information on a topic, the implemented system captures fragments of a text relating to the topic off the air, and over time, the whole text is collected.

'''Example:'''
Purely as an example, let the library of texts being transmitted consist of (1) Project Guttenberg texts (2) (one thing I wish I had access to as a kid:) mathworld.wolfram.com (3) Some free encyclopedia.
All the content is broken up into packets of some size, encoded, all the packets interleaved according to some scheme, and the entire interleaved stream repeatedly transmitted. The infrastructure for transmitting the data streams need not even be in the nation or on the continent where the recipients are. Let, for example, the entire stream take two months to transmit. 4GB of encoded data at 1200 baud will take ~40 days. 1200 baud for a packet radio seems feasible, though I can't say how complex the hardware would be. Bear in mind we're only talking about receiving, not a full-blown modem.

'''Extensions:'''
You can imagine having ''N'' different interleavings, which are transmitted on ''N'' different channels. When a child wants information on some topic, the request is sent out to at least ''N'' other green machines, over the mesh wireless network. All the machines start picking up chunks for the text on one of the ''N'' different channels. The chunks are sent to the requester over the mesh network.


That's the top level idea. I think it is feasible to implement with minimal hardware,
and the algorithms and their software implementations to go behind the hardware are interesting issues, many of which are already well understood or solved.

--[[User:Pstanley|Pstanley]] 10:52, 1 February 2006 (EST)


Yes, good idea.

You might like to consider using telesoftware, that is the unidirectional cyclic broadcasting of software and its selective use, to broadcast software packages for the laptop as well.

The following webspace about the DVB-MHP (Digital Video Broadcasting - Multimedia Home Platform) interactive televison system might be of interest.

http://www.mhp.org

The MHP system broadcasts Java programs to interactive television sets.

The following idea, not implemented as far as I know, might be of interest in relation to digital radio.

http://www.users.globalnet.co.uk/~ngo/tor00000.htm


William Overington

5 March 2006

----

Some interesting experiments in using direct satellite broadcasting for education took place in the 1970s using the ATS-6 experimental satellite.

http://www.nasm.si.edu/research/dsh/artifacts/CS-ATS6.htm

William Overington

6 March 2006

=== More RAM, less Flash ===
The laptop's RAM cannot be expanded in the field, but its Flash memory can be expanded easily and cheaply by plugging in USB thumb drives for any user who needs one. Thus, if you have a chance to add a little more memory to the base unit, add a RAM chip, not a Flash chip!

Question: What's the relative access speed of USB2 thumb drives
versus the built-in flash memory?

Note of course: A hard drive can easily be added by plugging one
into USB2 as well. One catch is that rugged, properly cooled
USB2 hard drives do not seem to exist at any reasonable price.
Another catch is power.

--John Gilmore

=== USB2 networking ===
The USB2 interface hardware allows one of the USB ports to be used as a device port as well as a host port. This means that with the proper cable and software, two laptops could be plugged together and you could network them via USB2. They can be daisy-chained in the same way, and should provide ~20 Mbytes/sec of thruput (see GNU Radio USRP software for Linux software that can keep the USB2 bus moving data at maximum speed). There's USB device software in the Sharp Zaurus, which runs Linux and has such a dual-use USB port (USB 1.1 though).

A USB2 cable is much faster than the wireless, and cheaper than adding USB2 ethernet cards + hubs + cables + etc. Running IP, DHCP, and Rendezvous over USB shouldn't be hard; I'm a little surprised it isn't standardized already (like IP over Firewire).

--John Gilmore

=== Cheap External VCD/DVD Drive via USB, including built-in streaming from e.g. teacher to students ===

An external, and separately powered, CD-ROM/VCD/DVD drive might prove popular, to use the laptop for watching movies, both instructional as well as for after-school entertainment. Would the current architecture, including display design/resolution/framerate etc. allow for this in principle? (It would be great if this were REALLY cheap; a normal standard CD-ROM for VCD reading, rather than a DVD, will do based on my experience in India; although I'm not sure what the difference in price between the two is.)

On the software side, how about some peer-to-peer streaming stuff; think one drive/player per say school class, and groups of kids watching a (same) movie on several laptops? This is possible with e.g. VLC - but could be built-in, preconfigured/high-lighted and very simple - thingie pops up saying "A neighbouring laptop has started streaming video, would you like to watch?" - done.

The hardware exists off the shelve... but will they all work out of the box? Drivers? Can player software be included in the "default" software? If not a full-blown "certification" program, at least at page (on this Wiki!) with "external devices known to work" (or if not, instructions on how to get them to work will probably be needed.

[[User:Vorburger|Vorburger]]


== Other Ideas ==

Other ideas, not specifically for hardware or software of the laptop itself:

=== Wireless Networking ===
A book called Wireless Networking in the Developing World is now available on the net in pdf at http://wndw.net/. It has a lot of information that might be useful when deploying the OLPC program. In addition to covering WIFI theory and design, it covers practical, social, and economic problems that they encountered.
One idea is to share the cost of the infrastructure with other local groups like businesses and local government. Another is to disperse the knowledge of how to operate the system so that if one person moves away, critical knowledge isn't lost.

=== Wireless Thin-Client as alternative? ===

The main counter argument for a thin-client approach is probably the need for maintenance/administration and general dependency on the central server, think e.g. particularly power in this context?

Still, maybe providing a (much) cheaper wireless portable thin client (think one-chip LCD+wireless controller; nothing else inside, particularly no memory and real CPU, which are probably the next most expensive part after the display?), for say $20 instead of $100, plus a commoditized say $1000 Dual-CPU with 2 GB RAM server, per school/entire village, could of interest in some situations? This is assuming that the configuration and loaded software etc. of all devices would be very homogenous, which is probably a fair assumption in this context? If the server could run say 100 clients (essentially running very similar software to what was built for the full $100 laptop of 128 MB RAM each, but with all of the OS and application code shared, thus only using about 16-32 MB for per-client data) then this seems at least imaginable, and would mean a total cost of just $3000 instead of $10'000 - for the 100 children.

That's a lot of ifs and assumptions of course, and only real pricing, scalability and the "market" can tell if there was an interest for (also) providing this - later. Just an idea, really.

=== Development Process ===

How much coordination of the Software Development Process is useful? Just make an SDK available and hope for self-organization? Or maybe e.g. a registry of suggested/needed software, a forum to coordinate software development between parties using this. Or how about volunteer summer projects for CS university students, like Google's summer of code thing?

=== User interface ===

Get John Maeda involved with the UI and other design elements.


=== Remember the Social Context of your Technical Solutions ===

I think that the ideas here need to be seen in the context of how networking and distribution of data is going to be performed. In the poorest countries, the ideas may need to be modified due to limited scope for immediate netwoking. Also the role of charity will be very improtant; remember that most of the african countries have not yet been involved in the project, so charity support will be a major driving force in distributing the hardware.

I suggest a charity funded system of data distribution, but flexible enough that it could be a commercial venture for a citydewller with transport. Western charity could provide data transfer credits to individuals in remote villages, to be spent on delivery of data serveices to and from the village. A courier would have a laptop with large storage expansion, and travel to villages to deliver data designated for them, and to recieve data for delivery from them. They would expend their credits in the process of givig their data transmission, and recieve a secure reciept for their last communications sent from the data courier. When the courier returned to the city, they would access the internet via a larger access point if available, or just by telephone if not, and would load the appropriate dvd into a usb drive to retrieve the appropriate requested data from several repositories of information - e.g. encyclopedia (possibly wikipedia), educational syllabus for the next month or year as developed by national education system, etc. The delivery of the data would be accompanied by a cashing in of the data-transfer-credits collected on their journy around the villages, and converted to cedits for cashing at a bank, or directly at the internet access point if appropriate. Email based securely encoded credits designated for the individuals in villages as charity gifts would then be recieved from the internet and delivered by the courier to the village on their next visit. To prevent ransom of the delivery of the credits, the entire collection of data intended for the village would be bound in to a 'delivery package' only decodable and seperatable by the intended recipient and then distributed to the individuals by a simple username and password (the username selected from a village specific list, to avoid confusion).

For adults, with limited postal service or reliability, A major application of importance would be political communications, and the option of communications by pgp communications is essential, but should be very user friendly. There must be a pgp-like delivery certification to ensure that deliveries of emails is made without being intercepted or held ransom by delivery people is also very important. - a user or regular email would confirm reciept by clicking a url on the delivered email to confirm reciept to an international reciept confirmation server. reciept confirmation of the village resident would be sent by pgp based confirmation.

access to personal data must be able to protected, by user/password encoded access only, also for deleting data - there should be a firmware controlled partition or directory on the flash which can only be accessed by users' passwords, or deleted in its entirety (not per user) - also there should be a limit on the space used by each user. There should be a hardware switch for deactivating wifi if installed, to prevent hackers and viruses in potentially unstable political climate - likely used to prevent political dissent.

I think that the social model of data repositeries on dvd, and internet access, in cities or perhaps towns is a realistic and efficient solution. With funding of data distribution by digitally secure credits or tokens delivered securely to villagers, access to data by the holders of the laptop can be guaranteed.

-- suggested by ma http://wiki.laptop.org/wiki/User:Ma

Latest revision as of 21:46, 25 June 2006

Redirect to: