Software Ideas

From OLPC
Revision as of 21:34, 14 March 2006 by Walter (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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 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?

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.

--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 Coda or 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.

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 home page and a there is 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.

Martin Guy 4 March 2006

Jörn Engel is currently working on a new flash file system called logfs. It is not yet clear if it will hit the mainline kernel in time for consideration for the first generation laptop, but it is progressing fast. It should combine all the advantages listed for either for the two file systems above with a new clean design. In particular, the mount time and memory footprint is independent from the device size, unlike the existing file systems.

I don't think that YAFFS can be considered an option for OLPC at this point because of missing compression and the quality of the code.

arnd 12 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, Vincent is an OpenGL/ES implementation that provides software rendering for constrained devices like cell phones; SwShader, precursor of transgamings' 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?

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/). -- 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.

Vorburger

Maybe a software can be developed for this. Since the system is going to be "Linux Based", just accesing the filesystem should allow to configure almost everything. A software that gives access to the filesystem (and emulate a camera or an USB thumb), could be included. Or maybe, a special cable provided with the laptop (that uses one special of the 3 USB ports) could allow direct access to filesystem. (or with a switch somewhere in the laptop that even without power makes it work as a USB-Drive, even with the posibility of charging batteries while connected).

Gandolfi

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?

Vorburger

Font technology

Which font technology is to be used?

I expect that the system will use Unicode for characters. In that case it is important that an advanced font technology is available. For European languages such as French and Spanish an ordinary font technology such as TrueType is fine, yet for languages using Latin script yet using accented characters which do not each have a precomposed Unicode character, an advanced font format is necessary. This is so that glyph substitution can take place to convert a sequence of a base character followed by a combining accent into a "looks right" display. One such system is OpenType.

I think that Arabic script systems need an advanced font technology. As far as I know, Chinese does not need an advanced font technology system. For languages of the Indian subcontinent I think that basic displays can be achieved without an advanced font technology yet for a display involving conjunct ligatures an advanced font technology is needed.

Some time ago I devised a font format using characters from the Unicode Private Use Area. As far as I know it has never been implemented. However, I mention it here in case readers might like to have a look at the documents and decide whether it might be of any use for the laptop project.

I named it the eutofont font format.

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

The eutofont font format has glyph substitution facilities and also has chromatic font capability.

The system could be extended if font technology needs are required which the eutofont font format presently described does not support.

Regarding the use of Private Use Area codes: by using them a compactness of font size would be possible which an XML based font system might not be able to achieve: in due course, if the eutofont font system were successful, maybe codes would be added to regular Unicode, though that would lose some compactness as the codes would not be in plane zero; however, in the short term the Private Use Area codes would be needed.

William Overington

11 March 2006

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) 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?

Vorburger

Education

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) :-)

Opinion: Logo could be an excellent way to introduce programming and logic. I started with it!! I think this should be an starter way, but definitely and impreved new version (with more than one "turtle" at least). Today's children can understand easily and faster everything related to computers. And could be some kind of art too if are given the propers tools. (filling closed shapes, or maybe object oriented). Could be a very nice piece of soft!!

Gandolfi

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