Ideas / concepts
openchallenge ideas, concepts and needs
Remember, that for the "implementations" category, you can participate with about any code written by you which you want to publish under an open source license. Alternatively you can solve one of the submissions listed here, and help someones idea escape from the drawer! [get your idea or concept listed here]
If you do tackle a task listed here, submit your implementation here.
Here's short-cuts to all the submissions to the "ideas and concepts" category, in chronological order. Would you like to be notified when new items are added to this category? [Subscribe here].
Openchallenge 2 | 2003
Candidates for Openchallenge 1 | 2003
- Health & Bottlenecks analysis
Jan 4, 2003, by Simon Strandgaard < totht3pt02 at sneakemail dot com >
People upgrade their machines concerning improvement of the conditions under which certain programs is executed. They want better performance of thier database, webserver, 3d-games. Unfortunately they do it blindly and risking that thier money is wasted and that the problem still is unsolved.
A program which can assist in such situations. i. e. testing for bottlenecks, health-profiling of individual programs, changing the execution-conditions, measure how sensitive the programs are.
One is doing video-capture, but once in a while a frame is dropped despite the hefty hardware. What could be the reason? What to do so no frames gets dropped? The program can maybe give us a clue!
Consists of 2 parts: profiling-API and an analysis-program.
We must read how healthy a program is: how good/bad is its performance. A program can have several health-values: frames-per-second, level-load-time, network-lag, response-time. Programs can give hints on where the problem lies: insufficient amount texture memory, slow internet connection.
Analysis program: By systematicaly restricting the execution-conditions, will enable us to see fluctuations in a programs health-state. This can be converted into a mathematical function which tells us about the programs weaknesses. From this information we can identify where to improve and what we will gain. Example:
* There is 99% chance that with 30% more memory, then Mozilla will perform 50% better in "prefetch".
* There is 50% chance that with 17% more memory, then Emacs will perform 25% better in "all-round".
* There is 70% chance that with 20% faster texture-memory, then Quake3 will perform 40% better in "frames-per-second".
Extended analysis program: By adding economic and a large hardware database, then the analysis program would be able to estimate/minimize costs combined with what your machine is capable of: AGPx2, PCI64, rambus-ram.
Candidates for Openchallenge 3 | 2002
The winner of the Openchallenge 3 | 2002 Ideas and Concepts category will be announced by January 15, 2003.
- A place for sharing knowledge and ideas
Dec 13, 2002, by Simon Strandgaard < totht3pt02 at sneakemail dot com >
When developing applications from skratch you are often left on your own. You can only find a little material about
how similar projects behavies internal. You do not know why they choose one solution over another. They could have a flaw in thier data structure which they cannot change, but if you know it you could take another data structure. We do not know how utopia looks, we do not know our options, only time tell us when we have choosen wrong.
I am developing a programmers-editor and I have no place to go sharing ideas and knowledge with others. I carefully searched for ideas/algorithms/datastructures with only limited succes. I had to throw it all away completely because none of it applyed to my situation. Yes I know there exists the comp.editors newsgroup but it is mostly VIM fanatics like myself.
People who starts new projects should stand on top of giants. A place on the web where people share there knowledge and
discuss new ideas. There exist forums for everything, example: editors, micro-kernels, compilers, multithreading, ai... Everyone can start a new forum. This is the place where experts seeks inspiration and where newcomers can learn.
An evil hybrid between: Wiki, OpenChallenge, Gamasutra...
* Each forum has a cookbook/handbook, where they discuss different algorithms: pros and cons. Like Wiki everyone can post comments. Many concepts/ideas are best captured if they are presented with figures and pictures.
* Everyone is welcome to submit material. When the computer science student, does his batchelor or Ph.D projects about a new area he can submit it. When you have a wishlist you can submit it here.
* If you have worked on a project for several years and you suddenly observes that your data structure is wrong. Then you can warn others so they not are making the same mistake.
* Adding your project.
If you are going to start on a project implementing this new idea, you can add the project so you can get some
common efforts. You maybe have a proof of concept or a link for an existing solution.
* list of open issues and ideas which needs proof.
* Mailinglists for each forum.
* Invite people of a forum to a conference/workshop where
they can discuss and share knowledge.
* During analasis you do not have to consider obvious inadequate data structures. So you gain time, robusness, scalability.
* You have chosen a safe path for your project, thus your chanches
for suvival has been improved.
* Avoid loosing ideas. When you have submitted your idea you
can be certain it will not get lost.
* You can discuss with people of your own kind.
This should be free server software so that everyone is able to
run a domain-specific server. This is all about writting some
scripts which does the magic. Choose a script-language which is
non-comercial and which is easy for others to read, like Ruby.
* web-frontend which supports all the earlier mentioned features.
* each forum has version-control on everything. Subversion is
prefered, but CVS is also doable. This makes it easy for several
editors to simultanously work on the site. Because of the
version-control-system, NO database is actually necessary.
* Everything is stored as XML and using XSLT for presentation.
Docbook with SVG+MathML is doable. It can output: html, pdf.
My ideas is not restricted to software only. Why not make this
idea generic, so it can host all kinds of ideas. How to making
cloth, how to cook food...
- Global/Local Hiscore System
Dec 5, 2002, by < totht3pt02 at sneakemail dot com >
Counterstrike to some degree has a global score system.
What I want is this to be generic, so it works for all
kinds of games: Tetris, robowars, quake, freeciv.
Build a generic hiscore/statistics/challenge system, through which you can:
* invite clans for a competition.
* get notify when you no longer #1.
* challenge people at the same level as yourself.
* see scary statistics of your worst enemies.
* Should run on both worldwide servers and local servers (university or a small company).
* Web-frontend through which you can see statistics, scores, invite for challenges, create clans, ...
* API through which games communicate. anti-cheat is important here!
* Database for storage and queries.
Module which the game should be linked with.
* communication with the server(s). downloading player info, uploading scores, statistics...
* anti-cheat is also important here!
- Robust Audio Hash
Dec 3, 2002, by < mechiepete at yahoo dot com >
audio stream (mono/16-bit/44100 PCM format, let
external tools worry about decoding and mixing it down to
very low bitrate (several bits per second) "hash" stream, which is resistant to filtering, MP3/OGG compression, volume variations, superposition of weak signals, slight skips, re-recording through microphone, and slight time-shifting.
implementation for doing partial matching on a "library" of such hashes (can be done with standard databases)
Identification of music, Note that this is different from watermarking.
Uses include media enforecement, research/archival purposes, biological (birdsong? who knows), P2P application (automatically naming file, finding similar but not 100% binary identical clips/songs). Also would be interesting to build a custom P2P node, have it spend a month downloading and computing hashes for songs at random on the system. Have the "Gnutella Top 40" :-)
Note that some of the P2P functionality can be accomplished with MD5 type checksums (but these require 100% binary identical-ness), or by analyzing filenames (but this requires the files to be named correctly, or a smart analysis scheme to compensate for misspellings and naming conventions).
Finally, note that media enforcement technologies are not necessarily bad for the consumer.
- Open shockwave player
Nov 18, 2002, by < yono at infosel dot com >
I think an open shockwave plugin for running applications through the web is really needed for linux/unix. This is actually already possible with the software from Codeweavers, but it only emulates the windows' plugin and is therefore waste of CPU resources - and the applications work too slow. That's the reason I think it's time the open community takes challenge of making an open plugin, especially for linux/unix systems.
Editor's note: The submitter wrote that he will contact Macromedia, with hopes that they would publish some technical information.
- Spaceship simulation
Nov 17, 2002, by < alodoiska at intnet dot mu >
Create an online distributed real-time simulation of a spaceship or a spacestation. A real-time simulation where users can participate in the construction, running and evolution of an existing space station like the international space sation project or a yet to exist spaceship within our actual knowledge constrains or beyond. Some sort of 3D environment where objects contstituting the spacescip can be explored, manipulated and modified. The beginning could be just a flat drawing of the spaceship/station - and in the case of the International Space Station - the aim could be to enable virtual participation for the whole planet to observe its daily running, exploration and enhancement. But how this will really be on the screen - no idea so far!
Editors note: I would like to invite ESA, NASA and other related organizations to explore this idea and see whether you could contribute to this project. Maybe this could be a good chance to get the average citizen of earth more familiar with the subject!
- Rube Goldberg Internet "Game"
Nov 13, 2002, by < dfischer at provide dot net >
The idea is to create a Java-applet based window to be
viewed within a browser client. An example "game" starts
when a ball-object rolls into the window from the left and
interacts with a set of creator defined objects that can
redirect the ball, change its color, change its shape, etc.
The ball routes around the window for a while, then exits.
Once it exits the browser is redirected to another site that
has another implementation of the applet sitting there -
again the ball comes into the scene and we see what this
person has created.
This idea needs a few components:
- The Java-applet "client" that plays the construction
someone has created.
- A window creator kit where people wanting to host one of these pages build their
implementation (I think basically develop a resource file
that the applet reads locally - or build the whole HTML
page, with the applet call and all the custom elements
filled in). This should be drag and drop graphical - put a
90-degree turn here - put a make the ball 2x as big here,
etc. It would be nice if power users could create plug-ins
- A hosted server that keeps a list of sites
that have these pages. This lets someone basically set this
up as a screen saver and run from site to site showing each
in order. This could be a random selection type thing - or
maybe certain "trains" of screens are really neat and need
to be saved a a ?? call it a movie or a sequence -- it would
be a trip through a set of sites/screens that is saved as an
entity. People could vote for their favorite ones and these
could be used more in the random sequence feeds or in more
of the saved "trains".
Kind of like a code-bits deal
where people building these get to show how clever they are.
Also - even though this is not the main point - there would
be space to trumpet causes or to advertise other things in
the background of the "scene" as the ball makes its trip
through a page. I figure there would need to be rules too
(no scene longer than 1 minute, no scene re-directing to
more than 4 scenes hosted by the same owner, etc.).
This idea uses that basic Web idea of wandering from site to site
and seeing what there is to see. Also, it is kind of an
I use a ball as an example - and maybe the entry / exit always needs to be a silver ball - but I guess if it was implemented right the ball could turn into a bird and fly over to the other side and turn back into a ball (a morph element in the toolbox, then a widget moving across the screen, then another morph object, etc.). Once inside the box there is a world of creative posibilities.
Editors note: if you are wondering what this Rube Goldberg guy is, browse here
- Making Cut-n-Paste easy (X Window System)
Nov 8 2002, by <anonymous>
I hate cutting and pasting under linux. X-windows apps do
it one way. GTK apps do it another way. KDE apps do it
another way. None of them work together nicely.
I want a patch to all of them and a control panel. The patch
unifies their cut-n-paste stuff to work together. The
control panel lets me say what style of cut-n-paste I want.
- "Only allow middle mouse"
- or "^c, ^x, ^v"
- or: "something"
- Universal Configurator
Oct 30 2002, by < jhihn1.N0SPAM@umbc.edu >
Linux uses a lot of text files for configuration. Whenever a newbie asks for
help, it usually involves editing some file, which in turn requires finding
an editor, learning the editor, figuring out the syntax of the file, editing
it while maintaining correct syntax, saving it, then finally getting the
software to recognize the changes.
There are only a few file formats used. Key=Value pairs in one form or
another are simplest, but formats increase in complexity up to XML.
In order to solve this situation I recommend the design of an application
core and modules that would be able to edit any common config file, or any
uncommon config file on a system. The modules would be responsible for
reading in a config file, parsing it and creating a GUI at run-time that
would allow for the graphical alteration of settings in the file.
* Use XML to store parameter type, value constraint, and widget
representation information. This technique can be used along side the config
file itself, or the values may be integrated into existing XML-aware
* There should be a rendering core, and pluggable input-export modules
Editors note: Scroll down to see also the "Self Contained Software Installation" idea. Any synergy? Update Nov 19 Have a look at the UnixConfig project - although it uses different strategy it serves the same purpose as this submission. Update Nov 22 Yannick Koehler let us know that he had presented similar idea on the Gentoo mailing list on April 22 , here and here.
- Create the program "Reason"
Oct 29 2002, by howard at floorten dot com
In Douglas Adams' book "Dirk Gently's Holistic Detective
Agency" he talks about a computer aided lying system that
helps you develop convincing sounding lies or justifications
which really have no logical worth but will fool people.
The challenge is to create this program, named "Reason".
Maybe first identify common logical tricks which can be
used to fool people and then implement a logic evaluator
which will help you substitute these tricks in for real
logical steps at vunerable steps in the argument.
What sort of tricks... oh I don't know... how about substituting
the universal operator for the existential one, eg "Mr X
claims he is psychic. We know Mr X is lying, therefore all
people who claim they are psychic are lying." ... that
sort of thing. Fails logically, but if dressed up with the
right language, you can pull this off with finesse!
- Learning e-mail classifier (server-side, IMAP folders)
Oct 25 2002, by akaihola at ambitone dot com
The use of a naive bayesian algorithm in automatically filtering spam and classifying e-mail has been discussed and also implemented in the past.
Implement an automatic e-mail classifier system which works together with an IMAP server. The system should:
a) constantly refine the database used to classify messages either by periodically re-analyzing the IMAP folders or by tracking each incoming message and periodically checking to which folder the user actually moves each message.
b) assign each incoming message an extra header item which contains the path of the IMAP folder where the message belongs according to the classification algorithm.
Also, extend an existing e-mail client by adding a feature which extracts the path of the suggested destination folder from the header and shows it to the user. The user should be able to move the message to the suggested folder with a simple click or keypress. If the suggestion is incorrect, the user can move the message to a more appropriate folder (or to the trash folder), and the server-side system will learn from the action as described above.
Alternatively use a better performing self-learning algorithm than a naive bayesian one.
Editors note. Links: 1) Study [PDF]. Learning to Filter Spam E-mail: A comparison of a Naive Bayesian and Memory-Based Approach 2) Book. Michell: Machine Learning, 1997 (pages 177-180))
- Self Contained Software Installation
Oct 9 2002, by hedblom at djupo dot com
Create something that makes it easy to run unix software complete with every setting, environment parameter and application dependant library from single directory. Uninstallation would be possible by only deleting the directory in guestion.
Editor's note: One possible way to implement this would be to create a kernel module (in "Linux and the like" environment) which redirects all open() calls to somewhere else using some kind of configuration file which could be stored to the installation directory of the software in question. This might be useful if you need to have for example many versions of same software with differing libraries etc. Still, there is many things to think on: for example how to handle per-user configurations? Update Nov 19 A visitor just let us know about the appdirs - application directory system, featured in the ROX desktop - it implements many(most) features of the idea.
Older submissions - implementations still needed!
- Trading Card Game (TCG) creator - add your own artwork
Sep 13 2002, by william at billfredindustries dot com.
The challenge is simple: Create a program that can create a
realistic-looking but fake image of a card from a trading
card game (examples).
It would fill in the HP, name, attack text, energy requirements,
weakness, resistance, retreat cost, and flavor text and
such. All the user would have to do is add their own artwork. Even better if you can rig it to do different TCG's interchangeably. You could make a TCG of the pointy-haired bosses of your company, or a visiting card for yourself.:)
- Linux API for the Synaptics cPad
Aug 23 2002, by mmoneta at optonline dot net.
The Synaptics cPad is an innovative touchpad that incorporates a display LCD. This provides a wealth of possibilities for using the device as a second monitor or application interface on laptops that incorporate it (like this one)
The problem, of course, is that the cPad is not supported
in Linux, and no information exists for developing for it.
The vendor does not appear interested.
reverse engineer the Windows API to this device to provide a
Linux API, so that applications can be developed. Ideally,
port at least one application (like gkrellm), so that open source development has a base to operate on).
The vendor was notified before publishing this challenge. Still, please pay attention and respect your local laws about reverse-engineering.
This challenge has been solved, browse here for the submission regarding Linux driver for the Synaptics cPad!
- Smart HTTP proxy for use with resource-scarce terminals
Aug 07 2002 by jukal at openchallenge dot org.
I often browse the internet using a mobile PDA, which has rather low bandwidth and limited resources in general. It would be just great, if someone coded a proxy that would automatically optimize the content. Like: optimize the byte-size of images, convert fileformats to more generic and less resource-hoggy ones, maybe it could even pre-render tables for example (this might already need some closer interoperability with the browser software though). Anything to make the content as light as possible to the resource-scarce terminal while keeping the content atleast understandable. Make the smart proxy do the work. This could be implemented as an Apache module or maybe as an extension to the Squid proxy, for example.
Editor's note: A website visitor submitted us a link to the w3m browser project - it might provide with ideas and code for solving parts of the task. 'With w3m you can browse web pages through a terminal emulator window (xterm, rxvt or something like that). Moreover, w3m can be used as a text formatting tool which typesets HTML into plain text'
An implementation for this challenge has been submitted. Browse here.
- Perl programming guidelines
Aug 05 2002, by Raphael.Rousseau at libroscope dot org
The challenge consists of writing coding guidelines for experienced programmers wishing to adopt Perl. These guidelines are not intended for "Perl hackers", but for the ones who are most used to programming in C or other not-so-idiomatic languages. Those guidelines should be short enough, so that half an hour should be sufficient for a medium-level programmer to understand and be abble to use them. They should give examples of clean way of implementing common operations and things to avoid. Does this already exist? If yes send feedback.
- Maximum compression-rate with lossless algorithm
Aug 02 2002, by jukal at openchallenge dot org. This idea originates from my workmate Jarkko.Hakala @ teraflops dot com.
Implement a compression algorithm that virtually takes resources for granted and provides ultimate compression rate for "source-like" data. If this is not enough, design a method for automatically detecting the optimal compression rate / bandwidth to optimize the total download/uncompress time. Who downloads and uncompresses the Linux kernel fastest using same bandwidth and identical HW resources?