Software ideas
Projects and proposals +/- | |
Content ideas | Content projects |
Hardware ideas | Hardware projects |
Software ideas | Software projects |
See also Category:Software ideas
This page is a brainstorming space for ideas which may eventually become Software projects. Keep in mind that the projects here are merely proposals or ideas. If you would like to add a new project idea, try to be reasonably thorough in your description.
When brainstorming, try to let your mind run free. When reading and looking for a project to start, keep in mind that we are looking for projects that encourage Playful Learning instead of Edutainment.
This section discusses whole application-classes that might be useful to have available on the OLPC laptops. That is, these are "requirements"-focussed ideas for what type of thing we want to provide. For many of the application classes there are existing PyGTK-based applications available that could be ported to Sugar (Sugarised).
Also, think about frameworks rather than just individual applications. Don't build MySpace. Instead, build a toolkit that could be used to build MySpace-like applications.
If you want to work on one of these ideas, add a section to the Software projects page describing your project (or just add your name below with contact information so that other interested people can contact you to organise into a project, or create a link to a Wiki page with more description about what you figure needs to be done):
Mathematics
- Simple Calculations
- Basic Calculators (e.g. GCalculator)
- Calc for more basic tasks, BC for more difficult ones, and SC or a GUI based spreadsheet, perhaps.
- Data Analysis and Visualization (as opposed to statistics)
- Fractran interpretor in C from ADA graph language
- LaTeX, this is free and powerful typesetting system creating beautiful documents
- Spreadsheet software ( see request:Ban_Samkha )
- Financial tools
- Budgeting
- Loan calculators
- Accounting software
- Higher mathematics
- Scientific calculators (e.g. GCalculator)
- Graphing Calculators (e.g. GTKGraph (unmaintained))
- Typesetting/equation editing (e.g. ASCIIMath)
- Algebraic solvers/explorers (e.g. NumExp)
- Symbolic manipulation/Computer Algebra System (e.g. SymPy)
- Geometric exploration (e.g. PyGeo (note: not GTK))
- Fractal explorers (e.g. GnoFract4D)
- Mathematica for children, for modeling and calculating
- Financial Literacy
- Cash vs. Credit
- Banking
- Interest and Borrowing
- Basic Accounting
- International Monies
- Applied Mathematics
- Digital Signal Processing (filters, echo, etc. in Electronic Music, voice-changer game, etc.)
- Motion simulation (rocketry, planetary-motion)
- Estimation through sampling (e.g. the total height of all the children, based on a sample)
Language
- Initial literacy (local language) See Category:Literacy ideas.
- Second-language learning - See Educational content ideas/language learning and Language learning
- Second-language literacy (WiXi?)
- Subtitling or captioning - (single-language/bi-lingual sub-titles for videos)
- Argument Mapping
- Logic, decision making, debate
- Story-book reader (illustrated story reader)
- Audio-book reader
- Dictionary (including meanings) (see also Words)
- ScriptExplorer - explore fascinating writing systems of the world. See [1] for some ideas.
- Phonetics toy - sort of like TamTam (Mini) but with IPA symbols and sounds. See PhoneticExplorer page.
- Thesaurus
- Spelling/vocabulary word list distribution, integrated homework exercises, practice quizzes, and teacher led tests live in class with results communicated to school server.
- Mad-libs, Exquisite Corpse
- Peer Editing Exchange
- Speech recognition
- Handwriting recognition
- Augmentative and alternative communication (communication prosthetic for children with severe speech disabilities)
- Speech synthesis
- Show and tell (child's video about an object or a slide-show illustrated by text and photos, to practice first/second language)
- Research and writing - a database program to store reference data when information is collected "cut-and-paste" style, or hard entered if a student has a book. For that information to automatically generate a reference list (MLA or APA style footnotes) to promote ease of preserving intellectual property. Additionally, a file of "notecards" to allow categorization, organization, and addition of personal summary notes that a student can then select from and insert into a document. Like traditional research notecards without all the paper and time spent copying reference data. Maybe something here would be portable.
Science
- Starfield explorers (e.g. nightsky)
- Chemical simulators
- Physics simulators (Newtonian, for example Phun [2])
- Biological simulators (population simulators)
- Genealogy software (e.g. Gramps)
- Dynamic system simulators (e.g. ecological simulators, economic simulators)
- Geography (mapping) software, coordinates, maps, data-overlays, GIS operations, FindTheCountry, USStates
- Data collection tools
- Unit conversion tools (e.g. GConvert)
- Time-lapse photography tool
- Photogrammetric Astronavigation (i.e. analyzing pictures of the night sky to determine the child's location)
- Moon viewer for lunar phase information (e.g. Moon)
- Earth viewer day/night cycle, for off-line use, lat/lon location tagging/sharing (planning to port EarthGlobe)
- Field Journal - where students can insert photos and commentary on native wildlife and domestic animals as a starting point to looking up those animals in field guides to expand with classification, behavior observations, etc. (keeping in mind a story I read of a 10 year-old boy who was so engrossed in his hobby of collecting and classifying ants that he identified several new species!)
Physical Education and Training
- Training program tracker (e.g. PyTrainer) (Idea added to Health Software.)
Art and Expression
- Vector graphic creation (illustration) moovl, An on-line program using Java that combines art with physics.
- Raster graphic creation (painting, sketching)
- Collage operations (eToys?)
- Programmatic creation (Logo or the like)
- Video creation
- Animation
- Stop-motion
- Art History Studies
- Performance broadcast (school plays and the like)
- Panoramic photography (i.e. basic multi-photo stitching, to produce wide-angle/360-degree images - depending on the hardware specs, may also be used to produce higher pixel-count images than with the onboard camera itself)
Music
- Voice/Ear training (e.g. Solfege)
- Score display and creation (TamTam?)
- Instrument tuning (e.g. guitar)
- Viral OLPC Startup Sounds - edit short jingles and share them them with network neighbours. They could also "mutate" with each copy
- minimalist keyboard -> audio keyboard program like tinypiano
- track based editor like audacity
- simple vst-based sound processor like VST Processor, or, possibly more in the spirit of olpc, a more mathematical/visual sound processing environment like Max/MSP.
- Audio Editor (Audacity), possibly can work with Tamtam (MAGIX Music Maker)
- MIDI input (e.g. M-Audio Keystation) for TamTam.
- Chord Geometries
Communications
- VoIP phone
- Conferencing system, virtual classroom, shared presentations
- Email client (gmail-for-children?)
- Voice-mail (voice email and standard voicemail)
- Web-page editor (wikidpad?)
- Televised video (streaming video viewer)
- Blog Tool
- Speech synthesis
For more school-to-school and internet-school communication, see the Internet and Radio and broadcast pages for a whole list of internet and non-internet communication methods, some of which would make good software-projects. This includes things like Sneakernet (moving files between schools and to an internet-computer on CD/DVD/Flash Drive, aided by routing software), one-way file broadcasting, etc.
Educational
- Role-playing systems
- Mind-mapping systems (outliners, free-form note-taking tools, e.g. Labyrinth, Gjots, )
- Integrate these into the bulletin board layer?
- A learning management system and collaborative work environment, for school servers. Moodle or similar.
- A groupware for project development and management, for school servers. Egrouware or similar
- A repository system for multimedia content in school servers
- A wiki engine for school servers
- Drill and test software (Yes, even on a constructivist machine - follow the link for discussion)
- Software for supporting teachers' use of rubrics
- Software to enable simple anonymous group voting for a multiple choice questions. The class answers are then collated and displayed as a 4 element bar graph. Using the wireless mesh to enable the whole class to vote on a simple A,B,C,D multi choice question removes the social pressure to always provide the correct answer in frount of the group. In addition to quiz sessions it would also teach democratic behavoir and encourage voting amoung the young. ( think who wants to be a millionare ask the audience ! )
- Notecard software
- Thinking Skills applications, such as the N-Back task. Note, this can also be made into a game, and possibly networked for multi-player.
- Executable English [7] software. Kids and others can learn to write logical reasoning rules, run the rules, and can see English explanations of the results. Non-commercial use is free.
Games (see also Games)
- Game framework: Multi-player, multi-team game architecture, so kids can make up their own games.
- Game console emulators (needs content)
- Strategy Games
- Turn-based
- Real-time Strategy
- Freeciv is a GPL'd version of the marvelous game Civilization
- Simulation Games
- SimCities micropolis
- Pioneer / Oregon Trail
- SimBusiness - (Lemonade Tycoon, Theme Park Tycoon, etc.)
- Open Transport Tycoon Deluxe openTTD
- CodeInvader CodeInvader
- Networked Version of the World Game (see http://en.wikipedia.org/wiki/World_Game)
- eToys Games
- Puzzle Games
- Crosswords
- Jigsaw Puzzles
- Word Searches
- Word Jumbles
- Hangman
- Mazes
- Sodoku (e.g. Python Sodoku)
- Rube Goldberg-like puzzles (e.g., The Incredible Machine)
- Card Games
- Solitaire (e.g. PySol or [PySolitaire http://pygames.sourceforge.net/])
- Bridge (e.g. PyBridge)
- Hearts
- Go Fish
- Texas Hold'em.
- Tournament framework: Allow kids to easily set up and manage a tournament
- Text-driven Adventure Games for 2nd language learning - Multi-user with pictures or 3D rooms.
- Massively Multiplayer Online Games for 2nd language learning - involving native speakers via the internet.
- Arcade/shooter
- 2d arcade/shooter multiplayer game with several modes such as well-known Deathmatch, Capture the flag, Domination,
etc. But without violence and in child-oriented setting.
Play (like games, without winners and losers)
- Peek-a-boom
- ESP
- There is a literature of this kind of social team-building play. For instance, adapt ideas from No Contest by Alfie Kohn.
Technology
- Microcontroller programmers/compilers (e.g. for irrigation systems, art installations and general automation)
- CAD/CAM applications (e.g. PythonCAD)
- Matrix CAD - a CAD system based on a standardized modular building system that lets students design, perform color graphic FEA on, and produce sharable 'recipes' for structures they can actually build and use. Matrix is a simple building system developed by designer Ken Isaacs in the 1960s as a DIY furniture building system and was later the basis of the Box Beam system promoted in the famous Box Beam Sourcebook of the 1970s. Based on 2x2 wood members connected with a tough but simple bolted 'trilap' joint, it allowed the creation of an endless variety of structures and was commonly used by renewable energy tinkerers of the late 1970s -until superseded by the introduction of aluminum T-slot profile products. Very well suited to solar energy projects, demonstration hydroponics, demonstration machines, puppet stages and school theatre sets, scroll or card picture boxes for traditional storytelling presentations, small animal enclosures, artists easels and pottery tables, light buildings and shade structures, and classroom or workshop furniture. Concept could be expanded to several different modular building systems such as T-slot, pipe clamp systems like Kee Klamp, the rod & clamp framing systems as currently employed in the RepRap design, or 'angle iron' space frame systems like that employed by the N55 design group, though these are using less easily obtained materials than simple 2x2 lumber.
- Source-code editor with transparent native-language display.
- Sharable interactive disassembler for Linux ELF x86, FLASH ActionScript bytecode, wireless firmware, Python *.pyc files, 8051 firmware, and other things found on the laptop. It can be the ultimate fall-back "show source" operation. Interactive disassembly is particularly well-suited to being a shared activity; as each person defines things (code or data, function name, data structures, etc.) the shared understanding becomes clearer.
- Distributed WEP key cracking over the mesh, allowing a group of XO users to share the work of obtaining an internet connection.
- Map making software, allowing kids to make decent maps from poor-quality measurements. For example, measuring some distances or angles around a garden or playground should allow the creation of a map. (angles alone gives you no scale of course) The software could treat the distances as springs, then try to find the least-stress deformation that allows all the numbers to work out.
PIM
- Clock
- Contacts
- Scheduling
- To-do lists
- Personal Wiki (eg TiddlyWiki)
- juwo (please see http://juwo.com. I shall need help porting it to Linux)
Teaching Software
eXe - an XHTML-Editor for creating E-Learnings. (You do not need any programming knowledge, an pretty easy tool: http://exelearning.org/)
Scratch - I think the OLPC team should consider the idea of including a version of Scratch in the OLPC machines. Created by the MIT, it's free, and it's an excellent and graphical way to create animations and games, to learn logic and how to program machines (specially for kids !), with no need of complicated instruction code : you make all by mouse clicks, and with a pretty interface. Try it, and you'll like it !
- Indeed. The Scratch folks are porting it to OLPC. I've just now created a stub Scratch page. Good thought. :) MitchellNCharity 17:02, 4 August 2007 (EDT)
I draw your attention to vpython.org, where VPython = Python + numpy + Visual + OpenGL.
The Visual module lets even novice programmers create mouse-navigable 3D animations, by making 3D graphics a side effect of Python calculations. This can be a highly enabling environment for kids. At an upper level, currently several thousand college students are writing VPython programs every semester in an introductory physics course at various institutions that include NCSU, Purdue, and Georgia Tech (see physics course).
This is free open-source multiplatform software and runs on Linux, Windows, and Mac.
There currently is a production version based on gtk1 and numeric and a beta version based on gtk2 and numpy. Most of the user base is on Windows and Mac, so the beta version hasn't gotten a lot of testing on Linux but seems to work fine (the Windows version is buggy, which is why the beta version hasn't been promoted to being the production version). The beta version adds the capabilities of transparency, surface textures, and sophisticated lighting (spotlights, specular highlights).
Here is a complete runnable VPython program that displays a yellow brick beside a red sphere (pos is 3D position):
from visual import *
box(pos=(2,0,0), size=(2,6,1), color=color.yellow)
sphere(pos=(-2,0,0), radius=1.5, color=color.red)
Holding down the right mouse button, you can rotate the "camera" around the scene. Holding down both buttons you can zoom in and out.
The beta version being based on gtk2 and Pango does provide some internationalization, but the Python program statements currently have to be written in English. For example, the object names "box" and "sphere" and their attributes are all English words. Obviously one could recompile the C++ code to change these names.
I'm the gatekeeper for this open-source project and have contributed to its development. Bruce Sherwood 12:15, 30 September 2007 (EDT)
Classroom tools
The idea of activity sharing supports several important forms of classroom interaction, and can be stretched to accommodate many more. However the focus on constructionism means there's a lack of support for teacher-centric interactions, even ones which are useful in constructionist learning.
Raising hands
The fundamental model that's missing is the idea of questions or assignments, posed by the teacher and answered separately by each student or team of students. It is possible to accomplish this 'manually', but the technical shuffling makes it impractical to do so in a real-time, classroom situation, especially if it is desirable to keep data for later.
For instance, I as a teacher want to be able to pose a question and have each student individually type a response. I could see, and record for later, who responded what and who didn't respond. After giving a brief interval, I could 'call on' a student either by my choice or randomly, and continue the discussion based on their answer. There are several obvious variations on this pattern - for instance, instead of typing a complete answer they could just indicate whether they have an answer, ie, 'raise their hands'; teams could present shared answers; etc. The software would help the teacher to keep track of each student's participation and to 'call on' students in a systematic manner.
This type of interaction is so fundamental that it would be great to have it available independent of the currently shared activity. The obvious place to put it, therefore, would be in the bulletin board. This means the bulletin board would have to have some support for active logic. There are 3 ways to do this that I can see: somehow using AJAX for the bulletin board (advantages: highly flexible, tools exist; disadvantages: memory and processor hog, needs some server technology on the teacher's side); hard-coding this one case into the bulletin board (advantage: can be optimized better; disadvantage: inflexible); or somehow making a plugin system for the bulletin board (advantage: flexible; disadvantage: security issues, the world doesn't need yet another plugin architecture)
(One disadvantage of using the bulletin board is that it could perpetuate the UI chasm between on-line and off-line communication. In-class questions are no more then small versions of out-of-class assignments, and the interface should be as similar as possible. But that is a bigger problem, one which permeates the XO, and deserves a separate discussion.)
Homunq 08:12, 14 January 2008 (EST)
Classroom management
Motivation and interest are the best ways to achieve engagement, but social pressure and good examples are also a part of the picture, and these are impossible without transparency. If there is no easy way for teachers (or, for that matter, other students) to tell the difference between a student who is working on the laptop, and one who is playing DOOM, bad things happen.
Intel/Microsoft's "Classmate" competitor is rumored to have tools for the teacher to freeze or take over the student's laptop, "to guide them through the interface". Regardless of whether this is a desirable relationship, it would be hard to accomplish within the security model and memory constraints of the XO.
However, it would be good to have tools for all members of a shared activity to see the current state and recent history of all other current members. This protects privacy (after all, you can just quit the shared activity for privacy) while creating transparency. For it to be useful, it has to be simple and fast. Useful things to see are which activities have been used, and whether out-of-band communication has happened, over the last minute.
Homunq 08:12, 14 January 2008 (EST) I can see this working by running a vncserver on all the XO laptops as a background task, the teacher laptop (which I see as being a conventional laptop) perhaps connected to a projector or interactive whiteboard (or a big OLED screen in a few years) would be able to run a vnc client like vinagre to be able to quickly bring up on screen any XO in the class.
System software
Follow System software link for some discussion of ideas.
System Software Enhancements
These are lower-level projects that would enhance the entire system's performance or usability.
- compiler optimization: if you are a compiler wizard, we understand that the Geode lacks a specific back end code scheduler, which limits performance, particularly FP performance. We'd love to see work go on in this area which would help everyone.
- tickless operation: there are patches out of tree about to be integrated into Linux that allows Linux to function without periodic ticks; we've been experimenting, and while our tick rate is probably the lowest yet observed on a Linux system, it can and should go further. Nothing in the system should poll!
- power management desktop interaction: applications need to be better aware of their power usage and requirements, and communicate this better to the system.
- The OOM (out of memory) killer is naive, to say the least.
- Sugar optimization: While the Sugar environment will get substantially faster as soon as we deploy a rebuilt Python 2.5, further work, particularly on Python startup, is in order.
- Sugarizing applications: There are many applications that with minimal work can be made to work well in the Sugar environment for young children. We encourage you to pick one and help out.
- Remote display: we have begun work on a low-cost projector. Making it easy to run remote applications is well worthwhile. There are a number of ways (and difficulties) of doing this, so there are immediate techniques available, along with much more sophisticated ways of advancing the "state of the X Window System art", depending on your inclinations and abilities.
- Educational applications of all sorts.
- Server-based tools for schools and support of the laptops.
- memory usage: many applications and toolkits waste and/or leak memory. Fixing these will help everyone and most easily done on conventional systems.
- performance optimization: fixing memory usage will usually result in faster code.
- toolkit adaptation: the display's effective resolution will change from grayscale to color mode and back. Toolkits and applications need to be able to adapt, and themes that work well in both modes verified.
- UI: most of the user interface work can be done today on conventional Linux desktops. But our system will also have an e-book mode, with dual 4-direction keys and enter. Key applications will need updating to work well in this environment (e.g. evince, web browser). Testing application's behavior under grayscale conditions and making whatever changes are needed would be helpful.
- Applications: goes without saying. The "Sugar" environment under development can be run on conventional desktops, and many applications should be simplified and optimized for our systems. Our primary audience are younger children, rather than the middle and high school students that have been the primary child users of computers.
- IPv6 support, and service discovery, which are very important to us.
- Security: Bitfrost is a way to protect against Day 0 attacks; as a large ecosystem of similar machines, it is something worth seriously worrying about.
- An update/software manager to handle updates and new software that come out after the laptop is given to the child
- A pythonic database administrator for SQLite databases and a stepping stone towards MySQL client server web applications.
Cultural
- Recipe-managing (allowing kids and parents to create and share recipes with friends and world. eg Gourmet Recipe Manager)
- Cultural Song Lyrics - search, share, contribute
- Cultural/Historical Stories - search, share, contribute
Social and collaborative
- Multi-person simulations of markets, agriculture, government.
- Yahoo Answers
- IM, chat, Skype
- Multi-person simulations of physics, biology, population,
- Wiki-like group drawing tools
- Wiki-like group music tools.
- Social Networking to connect young people worldwide
Porting Existing Software
This section explores existing applications that could be ported to the laptop in order to provide the functionality for the children. The List of PyGTK Applications is a good place to start. If you are porting an application, you'll want to contact the author and add an entry to the Software projects page describing the porting effort (and providing contact information for it).
Not knowing much about python, I wonder about the feasibility of emulation on the OLPC, specifically for Apple II software. It seems there is a project - ApplePy - in the works. There are a large number of great educational apple II titles, many of which have no more recent ports or versions. Though the graphics are limited, making these availible in the short term might be a good start. As a long term project, it would be great to port/reversion/internationalize some classics like Odell Lake, Number Munchers, and Robot Odyssey. Dialectric 19:22, 26 November 2007 (EST)
More generally, other emulators of older systems could open a wealth of already-written educational content. In addition to the Apple II, there's also a wealth of educational software for the Commodore 64 and early IBM PC (MS-DOS) platforms, among others. Most of it is poorly internationalized, but the C64 (the most widely produced single computer to date) spawned a large number of national communities in languages other than English, and the Apple II had a Soviet-made clone, the Agat. The C64 has at least two good modern emulators (Frodo and VICE), which could be profitably Sugarized. Early MS-DOS software can be run through dosbox, a Sugarization project for which is already under way. Emulators present the additional problem that ROM and OS images are copyrighted; any efforts by other volunteers to solicit donations of obsolete software from vendors (or their heirs and assigns) could help considerably here.
Emulating or porting Sugar into a website that could become a web portal for users of any platform with any machine. It could become a social networking site demonstrating the Sugar user interface and sharing the Sugar perspective of human and machine interaction.
Software for scheduling activities
Teachers sometimes find it hard to supervise mixed-ability groups, since each child learns at a different rate. There is a commercial program called Supermemo (an abbreviation of Super-Memorization), which demonstrates a Spaced repetition technique that might be used to schedule the learning-activities for each child. An open-source program similar to this might be found/written. It could be used, for example, to remind children to review and update mind-maps to stop knowledge fading from memory, which was acquired originally through constructionist activities.
(Further discussion of this concept, and why it does not necessarily clash with constructivism, moved to Drill and test software)
Mindstorms robot simulations
Seymour Papert, the father of constructionism and a leading-light of OLPC, wrote the book 'Mindstorms: Children, Computers, and Powerful Ideas'. The 'Mindstorms' name was licensed to Lego for their range of Lego Mindstorms NXT robots, programming software, motors, controllers, etc.
It would be good to see whether the OLPC could have some software simulation of Mindstorm-type activites (building and programming robots and sensors, production-lines, light/sound-detectors, etc). Since it might infringe some Lego intellectual property rights, the OLPC project could negotiate with them to see if any part of the Mindstorms ideas can be used for free, perhaps in exchange for some more advice on advances in constructionist education and activities. It shouldn't undermine their sales much, since children in Europe and North America prefer the physical toys to on-screen simulations.
Keyboarding/Typing Tutor
- Anything lightweight enough to reside on local XO laptop as a tutorial program or game
External links
Audio/Video edition of NGO-in-a-Box A set of Free Open-Source Video and Audio editing software-tools, documentation and tutorials for Non-Governmental Organizations and other groups for social change. They are available on CD or by download. Keyboarding Possibilities Could Tux Typing be a good addition? http://tuxtype.sourceforge.net/ It is developed and released under the General Public License (GPL). It is part of the Tux4Kids project (Tux Paint and Tux Math), which is a Schoolforge member. I just don't know if it can run on Linux. Those of you who understand the prgram spec's might want to email: tuxmath-devel@lists.sourceforge.net .
Software to create eLearning
Salasaga is software I've (Justin Clift) been writing for the last two and a bit years, nearing its first reasonable release. It's for creating eLearning for graphical apps, and could significantly enhance the ease of creating "documentation", PLUS make documentation that's easier to absorb.
See also:
- The SchoolTool Project: calendaring and resource management; student information system; skills tracking program developed by Virginia students and teachers to track which skills students are acquiring in their classes and at what level of competency
- Category:Software ideas contains many pages not yet indexed here
- Sample Applications has a few more examples