Firefox Download Button

Others view: Kepler lawsparabolaCoordinate conversionLogic gateFlocklogistic growthNussinov algorithmWelcomeDissociated press

Applet requirements

See also Review stages

In general, we are ready to accept wide range of various applets. However there are several important topics to discuss that may help you and us to reach the optimal result.

[Edit]Topic

The applet must illustrate encyclopedic topic. If the encyclopedic article is not yet present, the best is to start writing it as soon as you upload the code, maybe even before. Not all possible applets are encyclopedic enough:

  • Game applets are encyclopedic if they illustrate the widely known game, best coming from the old history. Games for that you have invented rules just right now are not encyclopedic, unless maybe you write an article illustrating some general concept used in computer games. Also please do not copy existing commercial games (like Tetris clone games) as the companies own the rules.
  • Text effects and other similar applets are also not encyclopedic by itself, but if the effect is widely known you can write the article about the effect and put the applet to illustrate it. Some big online collections of applets just for web site decoration are totally unsuitable for us.

[Edit]Interactivity

The strong side of the applet in comparison to the image or even animation is its interactivity, ability to capture mouse and keyboard input and respond by showing different content. Do not leave this without attention. An applet that simply shows some graphics without interaction is worth less than its screen shot, because the screen shot that does the same can be displayed with less trouble. An applet that shows animation is already better as is may be much smaller than the animation file. Still, even the animation is not enough to disclose the full potential of interactivity.

[Edit]Performance

You applet must be quick enough to be usable, do not stall and do not hang. If such things are happening, it will be accepted for the test runs but not for production pages, waiting until you or somebody else will fix the issues.

[Edit]User friendliness

The reader must concentrate on topic and not how to run your software. This means, the applet should be usable without reading user manual. This is a challenging requirement that can be achieved by

  • Having only minimal set of controls. Do not put a number of buttons and other controls that would be enough to control a spacecraft. Use the explaining button tool tips.
  • The controls must be "experimentation friendly", the applet should not hang on any input combination. It may be a good idea to have the reset button.
  • The buttons must be clearly labelled. Use plain words where possible. Do not use any abbreviations that may be unclear or confusing. If you need to put symbols to save space, have the help ('?') button to show the symbol meanings. Mind that human beings are capable to remember no more than 4 - 6 symbols easily.

There is no a strict rule against putting some advertisement or crediting links directly into the applet. However (unless somewhere in the help popup) they use valuable space and make your applet less impressive. You can always be credited in the applet project and home pages and applet source code (that is visible through review system). If this is not enough, we can credit you directly in the article (acknowledgements section), just write this requirement in the project page. We suggest to think maybe this is enough.

[Edit]Size

Embedding next to text requires applet to be smaller that the "full screen" version. Please think if your applet uses space efficiently enough. We needed to rewrite some otherwise good applets just because they were taking most of the screen.

[Edit]Think about reuse

An applet that just illustrates one focused topic is great. But in many cases also looks efficient to reuse the same applet for various related figures. For instance, the Conway's Game of Life applet can show arbitrary colony and is inserted multiple times into the same article - can also appear in other articles. Think, maybe your applet can be more powerful if you can customize it through parameters.

The parameter strings to configure the applet are often cryptic. Hence it may be a good idea to have some button that exposes the parameter string of the applet how it is currently tuned with user friendly controls. The built-in parameter alt supports alternative screen shots for differently configure applets (see How to insert applet referece on how the applet is embedded into page).

[Edit]Encoding

Either ASCII or UTF-8 encoding is required for all text files. If some other encoding is used, this may trigger alerts as the text text file may look for the builder as a binary file, and binary files are not allowed. Be sure you delete all .svn and .cvs files because we really do now want this stuff in public review.

If you have used different encoding and have access to Linux, you can use the iconv tool to fix your charset. To fix all files in release, you need the two bash scripts: 1. The converting script (must be named conv.sh):

iconv --from-code ISO88592 --to-code UTF-8 -o $1.conv $1
rm $1
mv $1.conv $1
echo "Converted $1"

2. The wrapper script that calls the former script (assumed to be in the same folder) for every .java file. The name of this script does not matter.

find . -name "*.java" -exec sh ./conv.sh {} \;

If you have a good applet with this the only problem, we will help you to convert. Make backup of your code before converting.

[Edit]Code, coding style and archive structure

Bringing your code from private kitchen to public conference may require to 'outfit' it, making easier readable for many people. Also, while our build system is quite flexible, it requires some simple rules to be followed. These topics are covered in the required archive structure article.

There are certain types of coding that are not welcome and are likely to cause rejection of the contribution:

  • Obfuscated code. Never obfuscate your code deliberately, neither by hand nor with obfuscation tools. Also please avoid generated code while under real need it may be tolerated. We need to understand your code during reviewing.
  • Use of undocumented API calls (mostly from sun.* packages). Nobody knows exactly that these methods do so please better not.
  • Excessive or inappropriate use of built in ads and other strings. Any such strings, if present, will be evaluated against the overall value of the applet and may result rejection.
  • Please do not include binary files other than images. Binary files (serialized objects, classes or jars without source code, binary data and so on) are near impossible to review and may contain anything the author wishes, so they are not appropriate.
  • Please do not include excessive amounts of code that is for "standalone run" as application and triggers a lot of security warning about the usage of forbidden features. While we understand that it is convenient to have the same code for everything, lots of false alarms make code difficult to review.

[Edit]Signing

When unsigned applets are strongly confined, signed applets have access to the web, local filesystem and hence if some malicious code gets in, they can do much more damage. Surely, if everything goes well they allow to identify the author still we think for the project like Ultrastudio.org it is safer to use unsigned applets. If you cannot get the unsigned applet working, please upload the source code and we will try to fix it together. No any applet on this site runs as a signed applet.

[Edit]Documentation

If your applet supports some parameters or otherwise has some features that are worth to be documented, please create the documentation in the applet Project page. A project groups all your releases so you will not need to rewrite documentation every time you upload a new version. Use the applet home page to describe things that may version specific.

[Edit]GPL-licensed works

If you contribute a version of the GPL licensed work where your are not the first owner, put the note on all changed files that you have changed them, and the date of the change, also stating briefly that has been modified. Both 2 and 3 versions of GPL require this. This is also why we put such marks on all files that we change, even when these changes look too minor to claim any serious ownership.