app /wiki

5Kapp/revision/19/

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:
    • The app must consist of a single "executable file" below the size limit.
    • As the app must consist of a single file all required resources should be embedded in the file.
    • 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 or resources over the network.
    • You must disclose all net access.
    • Your app should not break when no network access is available.
    • 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.
  • All resources (images etc) count towards the 5K limit and must be embedded in the "executable file".
  • 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.
    • 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.

Language/Runtime Specific Notes

Java apps should 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 can embedded in html can be considered as similar to Java applets, so similar rules apply (not a Flash expert, so this may need changing).

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. Resources should be embedded in the script as needed (this may require you get friendly with your languages Base64 libraries and that you create build scripts to package things up into a single file).

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

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.

Applications that are slightly (e.g. a few bytes) over the 5K budget may be allowed, but that will be at the discretion of the organisers. We might even arrange some sort of scoring system whereby you lose points for being over budget - so there would be a trade-off between adding a new feature that may get more votes and going over budget.

When

That all depends on how much interest there is. Once we have enough entrants we'll organise a £5app meet to do the judging (likely to be March).

See Also

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)

Discussion

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

Make a comment