Inferno: Difference between revisions
(→Links: Add link to Native Inferno on OLPC from SuperComputing 2006) |
PeasthopeOld (talk | contribs) m (In the OLPC box, corrected spelling, Hensbegren -> Hensbergen.) |
||
(9 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
__NOTOC__ |
|||
{{Olpcboxtop|toptext=[[{{PAGENAME}}|Inferno]]}} |
{{Olpcboxtop|toptext=[[{{PAGENAME}}|Inferno]]}} |
||
{{ OBX activity |[[Image:inferno.png]]| |
{{ OBX activity |[[Image:inferno.png]]|extra <!--|{{{text}}}--> }} |
||
{{OBX xobundle|http:// |
{{OBX xobundle|http://code.google.com/p/inferno-olpc/downloads/detail?name=inferno-012808-2.xo|inferno-012808}} |
||
{{OBX source other|[http://code.google.com/p/inferno-olpc code.google.com]|SVN}} |
{{OBX source other|[http://code.google.com/p/inferno-olpc code.google.com]|SVN}} |
||
{{OBX license gnu | gpl2 }} |
{{OBX license gnu | gpl2 }} |
||
{{ OBX team |Eric Van |
{{ OBX team |Eric Van Hensbergen ([[User:Ericvh|Ericvh]])}} |
||
<small>see more [[:Category:OBX templates|templates]] or [[OBX proposals|propose new]]</small> |
<small>see more [[:Category:OBX templates|templates]] or [[OBX proposals|propose new]]</small> |
||
{{Olpcboxbottom}} |
{{Olpcboxbottom}} |
||
[[Category:Inferno]] |
|||
[[Image:inferno-apps.jpg|thumb|Inferno Applications Screenshot]] |
[[Image:inferno-apps.jpg|thumb|Inferno Applications Screenshot]] |
||
[[Image:inferno-games.jpg|thumb|Inferno Games Screenshot]] |
[[Image:inferno-games.jpg|thumb|Inferno Games Screenshot]] |
||
Line 29: | Line 30: | ||
== News == |
== News == |
||
=== Third Release - [[User:Ericvh|Ericvh]] 10:54, 28 January 2008 (EST) === |
|||
* [http://code.google.com/p/inferno-olpc/downloads/detail?name=inferno-012808-2.xo inferno-012808.xo] - (~11MB) third release includes fonts optimized for the OLPC, includes a logon screen with account creation, and keeps writable data under $SUGAR_ACTIVITY_ROOT/data. This release also includes an expanded menu which covers more internal applications. NOTE: upgrades do not appear to be working, so if you have a previous version, please uninstall and then reinstall Inferno. |
|||
=== Second Release - [[User:Ericvh|Ericvh]] 15:56, 21 January 2008 (EST) === |
=== Second Release - [[User:Ericvh|Ericvh]] 15:56, 21 January 2008 (EST) === |
||
Line 40: | Line 45: | ||
* functional, but UI is not optimized for OLPC environment (yet) |
* functional, but UI is not optimized for OLPC environment (yet) |
||
* JIT currently disabled, so it runs slower than optimal but faster than most other sugar apps |
* JIT currently disabled, so it runs slower than optimal but faster than most other sugar apps |
||
* '''IMPORTANT NOTE:''' if you are running under qemu, you will have to change geometry in InfernoActivity.sh to 1024x768 or you won't see the menubar |
|||
== Links == |
== Links == |
||
Line 49: | Line 55: | ||
* [http://gsoc.cat-v.org/people/ameya/blog/ Plan 9 on OLPC] - Plan 9 running on OLPC (part of GSoC 07) |
* [http://gsoc.cat-v.org/people/ameya/blog/ Plan 9 on OLPC] - Plan 9 running on OLPC (part of GSoC 07) |
||
* [http://mbgokhale.org/SC%202006_files/IMG_1248.jpg Inferno on OLPC] - Native Inferno running on an OLPC development board at SuperComputing 2006 |
* [http://mbgokhale.org/SC%202006_files/IMG_1248.jpg Inferno on OLPC] - Native Inferno running on an OLPC development board at SuperComputing 2006 |
||
* [http://code.google.com/p/inferno-lab Inferno Programmer's Notebook] - open development experiments and blog |
|||
== Development == |
== Development == |
||
=== TODO === |
=== TODO === |
||
* fontfs which dynamically converts truetype fonts to inferno-native fonts |
|||
* olpc custom logon screen |
|||
* metafs which provides proper permissions to underlying file system in order to better match OLPC security model |
|||
** can handle multi-user environments |
|||
* camera support |
|||
** can take care of first-run scenarios and multiple session configuration |
|||
* audio support |
|||
* olpc custom init script |
|||
* OLPC targeted window manager |
|||
** bind activity writable data area over home directories |
|||
** first run creates user home directory |
|||
* integrate libfreefont and use larger fonts for default environment |
|||
** libfreefont can be used with OLPC fonts to bring them into Inferno |
|||
** start with static configuration and later move to a synthetic file system font server |
|||
=== Design === |
=== Design === |
||
* [[Inferno UI Design Ideas]] |
|||
==== UI Ideas ==== |
|||
* [[Inferno Application Ideas]] |
|||
* [http://plan9.bell-labs.com/plan9 Plan 9] and Inferno user interface design was focused on 3-button mouse environments. The two button track pad presents a very different look and feel. How do we approach a new user interface based on the properties of the XO (trackpad, game-keys for tablet only operation, stylus?) |
|||
* [[Inferno Infrastructure Ideas]] |
|||
* [[Inferno Implementation Notes]] |
|||
* Build menu system based out of hub design in such a way that it can be operated on purely with tablet-mode accessible keys (game pad) |
|||
{{Activity page |
|||
|icon=Image:inferno.png |
|||
* Keep task management and sharing as separate, omnipresent ''drop-down'' features |
|||
|genre=General Search and Discovery |
|||
|short description=Inferno® is a distributed operating system, originally developed at Bell Labs, but now developed and maintained by Vita Nuova® as Free Software. |
|||
* Make SVG icons and TTF first-class citizens within Inferno via built-in modules |
|||
|contact person=User:Ericvh |
|||
|activity source=http://code.google.com/p/inferno-olpc |
|||
* Add transformation primatives to draw libraries (rotation, scaling, etc.) |
|||
}} |
|||
{{Activity bundle |
|||
==== Application Ideas ==== |
|||
|bundle URL=http://opteron.9grid.us/olpc/inferno-012808.xo |
|||
|activity version=3 |
|||
* Learn |
|||
}} |
|||
** Read |
|||
{{Activity bundle |
|||
*** E-books |
|||
|bundle URL=http://wiki.laptop.org/images/2/29/Inferno-012108.xo |
|||
*** Reading comprehension |
|||
|activity version=2 |
|||
*** Vocabulary |
|||
}} |
|||
** Write |
|||
*** Typing |
|||
*** Spelling |
|||
** Arithmetic |
|||
*** Math Drills (Add, Subtract, Multiply, Divide, etc.) |
|||
*** Calculator |
|||
*** Unit Conversion |
|||
* Create |
|||
** Write |
|||
*** Document |
|||
*** Wiki |
|||
*** Web |
|||
*** Personal Journal |
|||
** Draw (Paint/SVG) |
|||
** Build (SDK) |
|||
*** Demos |
|||
**** Collide |
|||
**** Coffee |
|||
**** Bounce |
|||
**** Polyyhedra |
|||
*** Reference |
|||
**** Man Pages |
|||
**** Papers |
|||
**** Tutorial |
|||
*** Info |
|||
**** Memory Manager |
|||
**** Task Manager |
|||
**** Module Manager |
|||
**** File Tree |
|||
*** SDK |
|||
**** Code Editor |
|||
**** Debugger |
|||
**** Build Shell (MASH) |
|||
**** Wish (Tk Shell) |
|||
** Record |
|||
*** Audio Recorder |
|||
*** Video Recorder |
|||
*** Camera |
|||
*** MIDI Composer |
|||
* Play |
|||
** Tetris |
|||
** Minesweeper |
|||
** Soduku |
|||
** Snake |
|||
** Reversi |
|||
* Share |
|||
** Communicate |
|||
*** Email |
|||
** Collaborate |
|||
*** IM Chat |
|||
*** Voice/Video Chat |
|||
*** Whiteboard |
|||
*** Poll |
|||
** Post |
|||
*** Permanent Sharing (wiki?) |
|||
** Buddies (Community Management) |
|||
Don't know how to categorize yet: |
|||
* Multimedia Players/Viewers |
|||
** pictures |
|||
** movies |
|||
** songs |
|||
*** midi |
|||
*** encoded |
|||
** playlist sharing, etc. |
|||
==== Infrastructure Ideas ==== |
|||
* Build an Inferno/Plan 9 approach (using synthetic file systems) to the sharing/presence technologies |
|||
* Build an Inferno/Plan 9 approach (using synthetic file systems) to DBUS interface objects |
|||
* Build an Inferno [[School Server]] implementation to handle registration/authentication, ''post'' style permanent sharing (perhaps based on wikifs), and long-term storage (via [[Venti]]) |
|||
* Create an external interface to GUI so that external programs can hook back into Inferno GUI via synthetic file system allow programs written in C, Python, Squeak, whatever to use the same widgets and what not |
|||
* Single laptop/multi-user model based on cryptographically secured file system images and inferno-internal id management in order to accommodate OLPC security model. |
|||
=== Implementation === |
|||
==== Issues ==== |
|||
* pragmatic issues |
|||
# fonts need to be bigger, so does toolbar icon |
|||
# need "better" basic apps set in launch menu |
|||
# would be nice to have "full screen" shortcut box on many apps (or default to full screen) |
|||
# fix font selection in apps to use fonts which have been included |
|||
# need to mount home directory from user writable space |
|||
# "first day" script(?) for things like key generation and baseline configuration |
|||
* conformance issues |
|||
# rotate works, but not gracefully |
|||
# need full unicode font set to be fully internationalizable (talk to forsyth about licensing issues) |
|||
* emulation issues |
|||
# qemu doesn't seem to use the same screen size so menu bar is cut off under qemu |
|||
==== Notes on conforming to the [[Low-level Activity API]] ==== |
|||
The big barriers seem to be: |
|||
a) [[dbus]] - ugh, necessary to interact with core services (resource |
|||
(camera/audio) control, sharing (not sure how this will fit in with |
|||
Inferno yet), and most likely job control/monitoring features. |
|||
Either need to handle this via an external proxy (maybe some kind of |
|||
dbusfs) or link emu against the necessary bits. Actually, maybe the |
|||
right approach would be to use py9p to write a 9p gateway to the |
|||
relevant dbus services. Not sure if there are restrictions against |
|||
local socket connections, but if necessary I could always do it via |
|||
stdin/stdout. On the other hand, that could turn out to be prohibative |
|||
performance wise if I was using that path to do "tubes" or video. |
|||
Perhaps the right thing is an olpc device driver which does the |
|||
dbus stuff under the cover in a similar manner to GCompris. |
|||
b) Datastore - while unlocked currently, the eventual model for the |
|||
OLPC is to be locked down in such a way that any state gets stored in |
|||
their temporal journal. I believe it is a file system, but the apps |
|||
aren't meant to use it that way. This probably means we'll need to |
|||
have our own "image" for the user's home directory which we can then |
|||
mount and bind into place. We'll also have to support consistent |
|||
snapshots of this sucker. If you do the "full-implementation" of |
|||
journal, session state (windows which are open, etc.) needs to be |
|||
stored as well. But it seems to heavy weight to do with all of |
|||
Inferno. This might be gotten around with the data directory, but |
|||
right now it won't survive upgrades. |
|||
c) user/group - the user name the activity is run as depends on the |
|||
instance that is run (groan), but the group should be the same for all |
|||
instances of the activity. Might have to get creative with devfs |
|||
here. |
|||
d) network access - you should be able to set bits to allow open |
|||
network access, but it might also be nice to support their stream |
|||
tubes so we link in with the sharing methodology. |
|||
So there is a bunch of things that have to be adapted. The only |
|||
really onerous thing is Dbus interfacing. I've never dealt with DBUS, |
|||
so I'm not sure how I'd want to interact with it from emu. I suppose |
|||
we could link against dbus libraries, but maybe it would be better to |
|||
use devcmd to start some sort of dbus proxy which we can then expose |
|||
in the file system. Quickly looking at my options I'm leaning |
|||
towards relying on an external proxy -- there doesn't seem to be a |
|||
simple C library to link against to provide Dbus hooks. |
Latest revision as of 22:42, 9 February 2012
see more templates or propose new |
Inferno® is a distributed operating system, originally developed at Bell Labs, but now developed and maintained by Vita Nuova® as Free Software. Applications written in Inferno's concurrent programming language, Limbo, are compiled to its portable virtual machine code (Dis), to run anywhere on a network in the portable environment that Inferno provides. Unusually, that environment looks and acts like a complete operating system.
The use of a high-level language and virtual machine is sensible but mundane. The interesting thing is the system's representation of services and resources. They are represented in a file-like name hiearchy. Programs access them using only the file operations open, read/write, and close. The 'files' may of course represent stored data, but may also be devices, network and protocol interfaces, dynamic data sources, and services. The approach unifies and provides basic naming, structuring, and access control mechanisms for all system resources. A single file-service protocol (called Styx or 9P2000) makes all those resources available for import or export throughout the network in a uniform way, independent of location. An application simply attaches the resources it needs to its own per-process name hierarchy ('name space').
The system can be used to build portable client and server applications. It makes it straightforward to build lean applications that share all manner of resources over a network, without the cruft of much of the 'Grid' software one sees.
Inferno can run 'native' on various ARM, PowerPC, SPARC and x86 platforms but also 'hosted', under an existing operating system (including FreeBSD, Irix, Linux, MacOS X, Plan 9, and Solaris), again on various processor types.
(description copied from google code project)
Besides being a new runtime environment, Inferno offers a number of applications which should run out of the box:
- multimedia (audio player, mpeg player, avi player)
- games (tetris, reversi, lego mindstorms interface, etc.)
- collaboration tools (email client, chat, shared whiteboard, etc.)
- servers (web server, content addressable storage system, etc.)
- tools (vt terminal, telnet, sgml editor, debuggers, etc.)
News
Third Release - Ericvh 10:54, 28 January 2008 (EST)
- inferno-012808.xo - (~11MB) third release includes fonts optimized for the OLPC, includes a logon screen with account creation, and keeps writable data under $SUGAR_ACTIVITY_ROOT/data. This release also includes an expanded menu which covers more internal applications. NOTE: upgrades do not appear to be working, so if you have a previous version, please uninstall and then reinstall Inferno.
Second Release - Ericvh 15:56, 21 January 2008 (EST)
- inferno-012108.xo - (~11MB) second release, functional but not visually optimized for OLPC
- Documentation Bundle (~2MB) - installs papers and reference in browser library
Status
- second release available - smaller bundle
- bundle installs correctly
- interacts properly with window manager
- functional, but UI is not optimized for OLPC environment (yet)
- JIT currently disabled, so it runs slower than optimal but faster than most other sugar apps
- IMPORTANT NOTE: if you are running under qemu, you will have to change geometry in InfernoActivity.sh to 1024x768 or you won't see the menubar
Links
- Main Inferno Google Code Project
- Wikipedia Article
- Documentation
- Mailing List and other Resources
- Inferno Programming with Limbo by Phillip Stanley-Marbell (Book)
- Plan 9 on OLPC - Plan 9 running on OLPC (part of GSoC 07)
- Inferno on OLPC - Native Inferno running on an OLPC development board at SuperComputing 2006
- Inferno Programmer's Notebook - open development experiments and blog
Development
TODO
- fontfs which dynamically converts truetype fonts to inferno-native fonts
- metafs which provides proper permissions to underlying file system in order to better match OLPC security model
- camera support
- audio support
- OLPC targeted window manager
Design
- Inferno UI Design Ideas
- Inferno Application Ideas
- Inferno Infrastructure Ideas
- Inferno Implementation Notes
Activity Summary
Icon: | Sugar icon::Image:inferno.png |
Genre: | Activity genre::General Search and Discovery |
Activity group: | ,|x|Activity group::x}} |
Short description: | Short description::Inferno® is a distributed operating system, originally developed at Bell Labs, but now developed and maintained by Vita Nuova® as Free Software. |
Description: | |
Maintainers: | ,|x|Contact person::x}} |
Repository URL: | Source code::http://code.google.com/p/inferno-olpc |
Available languages: | ,|x|Available languages::x}} |
Available languages (codes): | ,|x|Language code::x}} |
Pootle URL: | |
Related projects: | Related projects,|x|Related projects::x}} |
Contributors: | ,|x|Team member::x}} |
URL from which to download the latest .xo bundle | Activity bundle:: |
Last tested version number: | |
The releases with which this version of the activity has been tested. | ,|x|Software release::x}} |
Development status: | |
Ready for testing (development has progressed to the point where testers should try it out): | ,|x|Ready for testing::x}} |
smoke tested : | |
test plan available : | |
test plan executed : | |
developer response to testing : |
URL from which to download the last .xo bundle that works with old releases | Activity bundle::http://opteron.9grid.us/olpc/inferno-012808.xo |
Activity version number: | Activity version::3 |
The releases with which this version of the activity has been tested. | ,|x|Software release::x}} |
Development status: |
URL from which to download the last .xo bundle that works with old releases | Activity bundle::http://wiki.laptop.org/images/2/29/Inferno-012108.xo |
Activity version number: | Activity version::2 |
The releases with which this version of the activity has been tested. | ,|x|Software release::x}} |
Development status: |