20130908: Release 2.2.1: C'mon, dudes. Break that one if you dare.

  * Allow a creative mode, perfectly adapted to open LOGO exercises.
    The world is never reset nor compared to the "expected" output.
    
  * Fix the dist build to not take all files copied by eclipse (fix #101)
  * welcome.PictureMono*: fix the templating of run() (fix #102)
  * welcome.Instructions: Fix a translation error (fix #103)
  * welcome.slugTracking: Mention also in scala and python how to test
    whether the ground color is green (fix #104)
  * Bat templating didn't even compile in Java and Scala, oops (fix #105)
  * turmite.hello: fix mission text: left=2; right=8
  * welcome.Poucet: specify how intersection cells must be counted
  * welcome.LoopStairs: say that there is no need to manually fiddle
    with the colors. 

20130830: Release 2.2. The funny times are over

  * Rebrand JLM into PLM (Programmer's Learning Machine)
  * Turtles: Allow for hints on segment sizes
  * Turtle.circle(): New primitive to draw circles directly.
  * New lesson turtleart on the classical Logo geometric figures
  * Upgrade our twitter4j dependency to use the new twitter API 1.1
    Twitter dropped support for the 1.0 API a while ago.
  * Drop the identi.ca spy. It does not work since the upstream move
    from status.net to pump.io, and I fail fixing it.
  * Drop our prototypal jabber chat dialog. It was not activated
    because it's not adapted: student only use it to try to cheat and
    get easy answers. A forum would be better. Students are
    authenticated, and the messages moderated (France IOI does that)
  * Build a plm-light jarfile, without scala and python dependencies.
    These langs remain usable if the deps are independently installed.
  * Specify a sain font as default to help Mac users (fix #100)

20130820:
  * RELEASE 2.1, the 100th day.
  * Introduce Scala as a new programing language (version 2.10+ required)
  * Port all exercises to scala.
  * Change turnLeft()/turnRight() to left()/right() in buggles & turtles
  * Translate all builtins of buggles, turtles and sorts to French:
    It is now possible to write avance() instead of forward()
  * Review all translations for uniformity and to iron out some typos
  * Test the compilation process in our JUnit tests, for Java and Scala.
  * Mark many more strings for translation in the engine.
  * Allow [!java]...[/!] constructs in mission texts to adapt to progLang
  * In debug mode, all adaptations of all progLangs are displayed, with
    a color code for each. This was mandatory with a third main progLang
  * Partially document the black magic fueling ExerciseTemplatingEntity 
    Erk, this class is based on ... inventive hacks ;)
  * Property jlm.display.fontsize sets the size of the mission texts
    (default: 10px; must be valid in a CSS)
  * MissionEditorApp: little application to edit the mission texts with
    realtime rendering after applying our pseudo-markdown directives
  * lessons/welcome/methods/picture/PictureMono*: new exercises on drawing, 
    but without the color so that it can come early in the learning
    process, when we don't have methods parameters yet
  * lessons/welcome/methods/flowerpot/*: two new exercises training on
    methods (and decomposition)
  * New lib/jsyntaxpane.jar, from debian package fixing some upstream bugs
    - Contextual menu now works, as well as Ctrl-Z/Ctrl-Y, etc
20130804:
  * RELEASE 2.0, the revolutionary night.
  * Remove the array world. It was not helping very much when compared
    to the bat world.
  * Use '' to get ' in translated strings to please MessageFormat.
  * Pythonize the documentation of all universes
  * add a button to lessonChooser to load lessons from disk
  * Disable the step-by-step mode when stopping or swichting
    the lesson or the exercise (fix #1)
  * Editor: kill buggles that are in outer space after world resizing.
  * Disable JavaScript, it's really not ready for the big night.
  * Update our version of jsyntaxpane to get a fully working jar file.
20130730:
  * Pythonize new exercises
  * Retranslate everything back to 100% in French
  * Various cosmetics, small refactoring and little bug fixes
  * Lesson navigator: Display which exercise are passed in which language
  * Entity.isSelected() returns whether /this/ is selected in the UI
  * Change Buggle.pickUpBaggle() to pickupBaggle() for consistency
  * ExerciseTemplated: Trim leading spaces of non-python templates
  * Fix BuggleView for non-square worlds (Fix: #83)
  * Implement a graphical lesson chooser (Fix: #19)
  * Rewrite and integrate all of the baseball exercises
  * Give the baseball universe an historical view, as for sorting one
  * PancakeView: Reimplement from scratch; can now be played with mouse
  * Split hanoi towers and the turmites out in their own lessons
  * Remove the meta lesson. It was not done, seemed difficult to
    finish, and complicated the code of the universes. (Fix: #2)
20130720:
  * Integrate the pancake exercises into the sorting lesson
  * New pancake exercise about implementing Gates' algorithm
  * 1 more exercise about the while loop: Moria
  * 2 more exercises about variables: Big Buggles's Race (1&2)
  * 3 more exercises about the for loop: Stairs, Course and CourseForest
  * 1 more exercise about the do/while loop: Poucet
  * Better integrate the slug hunting exercises; add new one (on parameters)
20130710: 
  * Fix the temporal view of the sorting world (plus various cleanups)
  * Allow to provide feedback easily. One click to open the dialog
    window, type your text, validate, and it's automatically saved
    with an http POST request.
  * Properly select the current exercise in the lesson navigator
  * Save the currently used programming language in the property file
  * Current exercise gets saved in zip files and reselected when loading
  * Speeds initialization by directly building everything in the right
    locale instead of building it with no locale, and then updating it
  * Progress spys (twitter/identica) get controled through properties
  * Default values of properties get saved to local file to ease their
    discover and tuning by users
20130705:
  * RELEASE 1.99
  * Pythonize all lessons: maze, recursion, sort and bat/string
  * Fix: demo mode in python was without delay
  * print() in python was not playing well with graphical console
  * Update French translation of missions: back to 100%
20130621:
  * Improve the BuggleWorld I/O and the BuggleWorldEditor:
    - better detection and error messages of invalid map files
    - every world's characteristic can be edited in the editor
    - buggles are read from/saved into world files
  * Update all existing worlds on disk to this format
  * Speedup the lesson loading with a cache of answer worlds:
    - If a relevant .map file exists, don't execute the answer entity
    - If not, save the .map file after execution for the next time
20130616:
  * RELEASE 1.98
  * Squeeze a bit our sources so that we can package it for Debian
  * Add a logo to the distribution (img/logo.png)
  * List the exact license of every image used in COPYING, and replace
    the ones for which we lost the license on the way. JLM is now
    perfectly clean wrt the licensing legal consideration.
  * BatEntities now work within the unit tests too (fix #67)
  * Integrate the bat exercise using integer arrays into the welcome
    lesson (fix #21)
  * Welcome lesson ported to python, both code and missions (fix: #89)
20130531:
  * Try harder to find a path where we can save our data
20130530:
  * Make sure that jarfiles compiled with Java 6 also work with Java 7
20130529a:
  * Really kill jung in the source code too so that distributed jar
    files actually work -- sorry.
20130529:
  * Reintroduce the student progression listeners. It was turned off
    for the debugging process, but that shouldnt be part of a released
    version.
20130528:
  * New lesson navigator based on JTree (fix #71)
  * Some better looking icons, with known licenses
  * Basic testing infrastructure (fix #8)
    It ensures that python entities manage to solve the Java worlds. 
    This could be extended in many way, including:
     - The java entity is not compiled, so there is no compilation test
     - Bat exercises are too specific to be tested this way.
    But at least, we have a testing infrastructure!
  * Exception raised in python code (including syntax error) are now
    correcly handled (fix #66 and #78)
  * Basic i18n infrastructure allowing to translate the user interface (fix #76)
  * Kill the ability to have more than one view per world (fix #35)
  * Save the session before switching exo/lesson to not loose student's edits (fix #45)
20130517:
  * Package baseball exercises in their own directories
  * Add a control panel for the Pancake Worlds ( raw & burned )
20130516:
  * Add an icon depicting the programming language in the status bar
  * Various polishing of the exercises in Python
  * Fix issue #64: Buggle interactive controls are now properly
    initialized
  * Package maze, welcome, lightbot, sort and bat.string1 and recursion exercises in their own directories
  * Refresh the french translation
  * Add a control panel for the Sorting World
  * Start porting bat exercises to python
  * Port hanoiWorld to python
20130515:
  * Huge python cleanup:
    - various cleanups, code factorization and bug fixes
    - Create or improve the bindings of Turtle, Sorting and Buggle
      worlds
    - Port many exercises to python, testing that the bindings are
      sufficients, and [partially] rewriting the mission text to that
      extend. The templates are not sufficient yet for absolutely all
      exercises, but many of them are. 
    - Fix line number computation in error messages coming from python
    - If python is the default language, use the python entity to
      compute the answer. Note that it still fails for some exercises.
    - Add back the jruby jar file, as jython needs it to access POSIX
  * Merge both views of sorting worlds, toward code simplification
  * Rewrite most sorting exercises mission texts after recent splitup
    of our mega exercise into several ones with one entity only each
  * Refresh the french translation
  * Simplify Random Mouse exercise, fix the demo of Pledge algorithm
  * Add a combobox to switch to next exercise in "success" dialog
  * Add an interactive way to change the buggle color and brush color
  * Baseball exercise of SMN can now be played with more than 2
    players per base
20130416:
  * Kill several seamingly good ideas that complicated the code base:
    - aliased source files: student must keep them synchronized
      manually now. We may want to reintroduce this at some point?
    - Java code that cannot be compiled. This would have been useful
      only for user-provided text files, but we don't use it now.
    - uneditable source files. The student will see all files passed
      to the compiler, now. This was never used in production
    - inconditional static rewriting patterns to apply to the source
      code. People should change the code in their source directly :)
    - lessons cannot be sequential anymore. Forbidding pupils to
      attempt the exercise in the order they want is not in the JLM
      way of style anyway.
    - exercises cannot have more than one kind of exercise. This was
      introduced to have all sorting exercises at once, but this was
      split in several exercises because the SortingView was gone amok.
  * Simplify a bit the way external lesson files are loaded
  * Remove a bunch of unused dependencies on external jars.
    The distribution jar is now only half as big only (still 20M).
  * Request a confirmation from the user (through a dialog) before
    reverting the exercise, that was a mean trap...
20130328:
  * Merge all code (and wiki) from last year's students
  * Accept a pull request from J-Bastian, with a new lesson (SMN) and a
    bunch of bug fixes.
  * Various little bug fixes.
20120319:
  * Minor update on build process
20120318:
  * Allow jlm://<lesson>/<exo> links in mission texts
20120116:
  * Add an ant target to generate a source tgz (for Debian packaging)
20120110:
  * Do not even try to compile the Java sources if we were asked to
    used another language, such as Python.
    (Fixes #48: Python source code not used if some java code provided)
20111201:
  * Port some more welcome exercises to Python. 
    The translations should be updated to appear again.
  * Port all sorting exercises to Python
20111013:
  * Fix a bug in python that were due to an extra space added in front
    of the body. Damn python indentation freaks.
  * Add a debug mode to JLM, to see more infos on problem
  * Add a trap spitting a lot of info when issue #42 (line numbers are
    shifted) occures. I need more info to understand where it comes
    from.
  * Fix the array exercises (there were bugged and not properly
    integrated into po4a)
  * various improvements to the missions and their french translations
  * Remove the "clear session" menu entry. Too dangerous.
  * Graphical consistency between menu choosing the human language,
    and the one choosing the programming language
  * Show in about box where the session gets saved to avoid NFS hell
  * Various typos and little errors hunted down by Pierre-Etienne and JC
  * Improve shortest path exercise by not removing distance marks, so
    that students can compare their computation with the correct one
20111006e:
  * Allow to code in python, javascript or ruby
  * Definitely kill the linearity of lessons (combobox removed)
  * Load the lessons on need only (and save them separately from each
    other)
  * Cleanup the way identica and twitter get informed of student
    progress
  * Textual display of what's wrong when the world is not what's
    expected
  * implement the world equality for logo
  * Allow to have lectures, ie non-interactive exercises
  * Improved turmite track, with a specific view displaying the step
20110909:
  * New exercise track on turmites
  * Enforce that the buggles cannot move to outer space with
    setPos(), setX(), setY() nor peek outer space with getCell()
20110907:
  * Add a new lesson navigator allowing to break the lesson linearity
  * Use identi.ca in addition to twitter to push the success of students