A competition to create an application using only 5K (5120 bytes) of code and resources.

Motivation

5K is pretty small. It's about enough to show an idea. Working the constraint will require some creative thinking. With a 5K app you ain't gonna need it, so you're forced to really pare down your app to make it just do what it's meant to do. It also shouldn't take long to write a 5K app, so it's a great way to try some experimental ideas out.

The Rules

5K is the total size of the executable app + resources: The app must consist of a single "executable file" + resources below the size limit. Where possible resources should be embedded in the "executable file", but it's ok to have some of them separate if that makes life easier (e.g. with html and gifs). The "executable file" may be, for example, a .jar file, .swf, html file (with embedded Javascript), Python, Perl, Ruby or PHP script (basically whatever makes sense as the "standard" distribution mechanism). The "executable file" must be runnable "as is", without requiring an installation or decompressing step by the user (so self-extracting is ok, if the app then runs without further prompting from the user). Obfuscators etc are allowed and may be needed to help reduce compiled code size.

Network access is allowed, but: You will not load more executable code over the network. You must disclose all net access. Your app should not break when no network access is available (fail gracefully). You may only access servers you do not run (no writing a webapp that does all the work for your 5K app). Preferably all network access should use standard APIs (e.g. Flickr or Twitter APIs), though this is not a requirement, so screen-scraping etc is ok.

All resources (images etc) count towards the 5K limit.

You may specify certain (reasonable) installation requirements (e.g. Java/.Net/Firefox/Greasemonkey/Python/Perl/Ruby) Standard/Vanilla versions of whatever runtime you wish to use should be assumed. MacOS X comes with a lot of stuff installed by default, so if in doubt assume that to be fairly "standard". Additional "non-standard" libraries may be used, but they will count towards your budget. You may plead your if you want to use libraries that are "defacto" standards. No writing libraries that do all the work for your 5K app.

Browser-based apps must work in at least one major browser - cross-browser compatibility is a bonus not a requirement.

No buying yourself an advantage.

Bending the rules with style will afford you a certain amount of clemency.

Language/Runtime Specific Notes

Java apps should be a single .jar file that may execute either as an applet, application or webstart app. For the applet and webstart app additional resources may be required (e.g. html file to embed applet, jnlp file for webstart) - these resources don't count to the budget, as long as they are not used to pass additional information to the app. If they do then they count to the budget. Effectively they are equivalent to invoking the app on the command line.

Flash apps embedded in html can be considered as similar to Java applets, so similar rules apply (not a Flash expert, so this may need changing). Flash Crunchers are only allowed if they are a freely available tool. Otherwise this would give an unfair advantage to those with the money to buy them. Freely available crunchers or home made crunchers are allowed (assuming you also make your home made cruncher freely available).

Javascript/HTML apps should be contained in a single file. To keep things clean it is recommended that a build script is used to take separate javascript, html and css and combine them into a single file. A compressor (e.g. YUICompressor) can also be used during this step. Images may be kept separate though (as packing binary data into your html file is a bit fiddly).

C/C++ etc compile to executables, so that should be fairly obvious.

Python, Perl, Ruby and PHP can be turned into self-extracting scripts to save space (see notes I have on doing this in Python) and should take the form of a single file. Images etc can be left as separate files - unless you fancy getting friendly with base64.

PHP may assume the presence of mod_php (seeing as that's the standard way to run it).

Mobile applications are of course acceptable, whether J2ME, Python, Native (or anything else). For J2ME apps only the jar file counts towards the limit, if a jad file is required for installation it does not count. Obviously it only has to run on one handset, so don't worry about porting.

Feel free to be creative - 5K C64 apps, robot control programs etc. Just try and stick to the "spirit" of the rules.

Judging

The winner will be determined by a vote (possibly a preference vote) at the event.

Ideally the applications will be made publicly available prior to the event for everyone to see. Applications will also be demoed at the event, so everyone gets a chance to see them in action before voting.

If the number of entrants makes voting at the event impossible we will instead have a period of online voting prior to the event to determine which entrants will be shortlisted for the event.

Voters should judge applications based on their:

Utility/Fun - does the app do something useful or if it's a game is it good fun?

Awesomeness - does the app achieve something technically impressive within the 5K budget?

Applications will be reviewed before hand to ensure they meet the rules.

The 5K budget is a hard limit. Your application cannot be entered if it is over budget.

When

The 5K app judging was held on the 20th of April 2009 at the £5app meet. For more details see this blog post.

Entry Submission

Put up your entries online somewhere with supporting info (list of features, screencasts of it in action etc), so people can easily get access to the app for judging. For applications that may not be feasible for all people to run (e.g. mobile or mac/win specific) I'd recommend you do some demo videos/screencasts. Thay way people can at least see what your app does/looks like if they don't have the right stuff installed to run it themselves.

Once you have your app online email demo AT fivepoundapp DOT com or else use the google group (or mail John or Ian directly if you know our addresses) with details of your app and the URL.

Judging has already taken place

See Also

Example Apps

5KTwit - example app by John (Twitter client in Java)

5KTODO - another example by John (Javascript with local storage of TODO items)

5KEdit - another example by John (Python Writeroom style text editor)

5KTuner - another example by John (Guitar Tuner)

5KMorse - another example by John (Morse code using capslock LED)

App Ideas

A few ideas to get people started (feel free to add some more if you have any spare):

Personal/Desktop wiki

Image editor (Photoshop in 5K)

Graphical calculator

File encrypter/decrypter (PGP in 5K)

P2P app (hard to beat 15 line P2P app in Python, though no GUI for it)

Library/Cataloguing app

Image effect apps (e.g. Tilt-shift)

Time-lapse photography app

Stop-motion animation app

Bug-tracker

Wireframe maker

Podcast downloader/aggreagtor

Podcast recording software

Games (most Java 4K contests seem to be for games, so see links above)

Apps using data from BBC Backstage

Discussion

The rules are open for amendment/discussion: £5app google group