SoC Ideas Addon Server
Improve Wesnoth Addon Server
Wesnoth has an addon server which offers users to upload user made content (UMC). This allows all other users of Wesnoth to easily download and install this content. The server was originally written for user-made campaigns but contains a lot more types of addons nowadays. Both the server side and the client side need to be improved.
Neither the server nor the client side of the addon server have seen much improvement over the years; both are overdue for a reworking. The client side GUI needs polishing. For the server side we would like to allow better integration with various tools (such as wmllint), which improve the quality of the addons.
The server code either needs to be updated or rewritten, the student is free to make this decision him or herself. The student may choose the language for the server, but because some of the code that needs to be integrated is Python we'll need to hear a specific justification for any other choice.
- The server only needs to run on Linux systems. Cross-platform portability would be nice but isn't required.
- At the moment there's a rudimentary integration with our translation project Wescamp. This needs to be improved. Upon uploading the new content needs to be send to Wescamp (via a repository commit). And the translations need to be fetched on a regular basis.
- We have various tools to check the WML code and also upgrade it to newer version. The addon server needs to be able to run those tools on the content.
The client side needs improvements. There are two main clients; one built in to the C++ game binary, and a standalone inmplementation in Python.
- Upgrade the GUI. Mordante is working on a new GUI library which is intended to make it possible to make the wanted changes.
- Make it easier to see summary and status information on addons. At the moment a lot of new users download something and have no clue what kind of addon it is.
- Make it easier to see whether a newer version of the addon is on the server and update the addon.
- Make it easy to select which translations you want to download and also look for newer versions of the translations.
Required knowledge and talent
- Knowledge of C++, the game is written in C++ and modifications need to be made there.
- Knowledge of Python, various tools have been written in Python which need to be integrated with the new server.
Milestones and deliverables
- The first step is to determine what exactly needs to be done and determine in which language the server will be rewritten. This includes, but isn't limited to:
- Determine the exact feature set.
- Protocol changes needed.
- Methods to integrate with both the WML tools and Wescamp with the new server.
- Determine the GUI for the client side.
- Justify the choice of language.
- These points will need to be presented and discussed with the mentor(s).
- The next thing in to implement the feature set. The code needs to be fully functional and committed in trunk.