These are a few thoughts on how the code base and general development setup can be made more maintainable:
- Keep experimental code in branches until ready to incorporate into the core:
- Maemo build.
- Windows Mobile Build.
- Tilt input support.
- Socket input support (? - this may be used).
- Unify desktop front-ends.
- Remove obsolete code from SVN, eg.
- Qt front end.
- Old MacOS and Win32 front ends if/when merged with GTK+.
- 'Test' directory.
- Utils/Linux/Packaging (see next point).
- Make SVN include the authoritative set of colour, alphabet and training files.
- Audit preprocessor #defines.
- Factor out some of the worst overengineered code:
DasherView / DasherViewSquare distinction
- Use of alphabet symbol ids rather than strings (this needs some thought, eg. formal definition of what the role of the alphabet is)
- Rationalise use of myint / screenint types
- Restructure source code directories to group things better by functionality
- Remove intermediate libraries from Unix build - just build a single executable at the end