Development Plan
There is a lot of work to do on FMSLogo.
The code base lay in atrophy for five years before I picked it up.
It will take a lot of work just to bring it up to date, even without making any major updates in functionality.
Below is a rough outline of the development steps that I intend to take.
Of course, I will always be looking to fix bugs and make small updates that enhance the usability along the way.
-
Port the documentation from RTF to DocBook.
Completed on 2006-02-19.
This will make the manual easier to update.
It also gives me an opportunity to carefully read the documentation, learn what FMSLogo is capable of, and fix typos.
-
Write an extensive set of automated tests.
In Progress (ongoing task).
Without a good test suite, I cannot confidently update FMSLogo without introducing regressions.
Because FMSLogo has a lot of features, writing a comprehensive set of tests is very time consuming.
-
Port FMSLogo to gcc and wxWidgets.
In Progress. ETA: late 2009.
Currently FMSLogo is built with a defunct compiler and links to a proprietary window toolkit.
Porting FMSLogo to gcc and wxWidgets will open up development to more people.
-
Use the GNU tools to find performance bottlenecks and fix memory leaks.
This purpose of this step is to gain a better understanding of where FMSLogo's problems lie.
-
Update the language engine to the latest from UCBLogo.
FMSLogo is based on UCBLogo's language engine.
However, while UCBLogo has made many advances, FMSLogo is still using a snapshot of UCBLogo that is at least five years old.
There are some major benefits to updating the language engine.
Just adding a "not equals" operator would make FMSLogo a significantly better programming environment.
-
Internationalize FMSLogo.
Completed on 2006-12-26 (out-of-order).
This will make it easier for third-parties to localize FMSLogo.
Localization is a requirement for adoption within schools systems.
-
Begin implementing new features.
By the time I get here, FMSLogo will still be roughly the same as MSWLogo 6.5b, but it will be ready to be extended.
The possibilities are limitless, but I'd like to start by adding a good sprite library, better support for 3D drawing, an interface for text to speech, a clean networking API, etc.
|