Difference between revisions of "AddonServerSocial"

From The Battle for Wesnoth Wiki
(Web Interface)
(Server Side)
Line 58: Line 58:
  
 
=== Server Side ===
 
=== Server Side ===
 +
====Choices====
 
I plan to work on the server code in C++, because:
 
I plan to work on the server code in C++, because:
 
* C++ can easily embed python directly, or with Boost C++ Libraries (which are already one of Wesnoth' dependancies)
 
* C++ can easily embed python directly, or with Boost C++ Libraries (which are already one of Wesnoth' dependancies)

Revision as of 23:47, 29 March 2008

Me and Myself

Who Am I IRL ?

My name is Bastien Abadie, I'm french (21), living in Brittany (http://en.wikipedia.org/wiki/Brittany). I'm in an engineering school (http://www.enib.fr), i'll get my master in Computer Science next year.

Actually i work daily on a project for my school about 3D representation of ship and climate conditions of the sea. Plus there is a big network part in this project (connecting a C++ client to a matLab server and using data).

...Online ?

You can contact me by mail or GTalk using lao.geek(at)gmail.com .

My nicknames on Wesnoth are:

  • lao on the forum
  • La0 on the wiki (lao was already taken :/ )
  • lao on gna.org
  • Lao on IRC

Experience

Development

I've worked on many websites as a developper (i'm not a design guy !), mostly in PHP, using XHTML/CSS, and sometimes Javascript (with Jquery). Many of my school's projects were made in C/C++ (nethack-like game, HTTP/HTTPS server with cgi server, paint-like ,...); I've played with JAVA (JSF, JQuery for the web, Netbeans ide...) but I rather prefer C++.

Speaking of GUIs, i've made some in Tcl/TK, Qt, and C# but no GTK at the moment. Like most Linux developpers (... and admins) i've made lots of shell scripts, a bit of python,... and played with config files.

Open Source

I'm an occasional developper for ZenPhoto http://zenphoto.org, the simplest and cleanest web photo gallery! I've worked on the video support for ZenPhoto http://la0c00n.info/zenvideo . Now videos are officially supported in the core Zenphoto, no more needs for hacky patches :p I have been very busy at school this year, so little implicated recently in this project.

I have NOT participated in any ways to the Google Summer of Code before.

Games

I'm not a big gamer, but enjoy some good FPS : Half Life 1&2, Portal, Counter Strike (original, not really into Source), all Call of Duty, Serious Sam (only in coop!). I like RPG games as Baldur's Gate, Neverwinter Nights,... I play a bit on my Wii too: Zelda, Super Mario Galaxy, Wario Smooth moves.

Now, for Open Source Games: Lbreakout2, Tremulous, frozen-bubble, ... and Wesnoth of course :)

Practical

As said in my introduction, I live in France, meaning i'm under GMT+1. I can work from 9:30am to 7pm with no problem; i'm generally awaken from 9am to 0AM. I'm used to work late, and attend IRC meetings nightly.

I'have not any exams or school work to do during the period of the SOC. So i won't be pertubated :)


Work on the Addon Server

I plan to work on the Addon Server, update the code to improve inter-operability with external tools (such as WML tools and WesCamp) and add some social content.

My personnal idea is adding some social content to addons. It means adding tags, which represents and defines in a more human way the addons.

Tags

Tags can be given by Wesnoth staff and by author. After discussing of it on IRC, users should not have the possibility of adding some tags to addons. By the way, authors can add tags too but NOT the same as those used by the staff.

There would be 2 types of tags: Registered ones, applied by the admins/staff, and "normal" ones applied by addon's author. Tags used by authors could be set freely or selected in a list defined by the admins.

Tags permit also to know which addons he liked, and search for addons he WOULD enjoy. It's a simple search function for tags, but it should be appreciated by users.

Tags would be added in the PBL file for each addon: (Documentation on PBL http://www.wesnoth.org/wiki/PblWML) with the formating :

authorTags="My First Tag","Cool Addon"
officialTags="Best Addon Ever"

Server Side

Choices

I plan to work on the server code in C++, because:

  • C++ can easily embed python directly, or with Boost C++ Libraries (which are already one of Wesnoth' dependancies)
  • C++ runs on Linux AND stay easily portable to others platforms (Windows, Mac Os X...)
  • The biggest part of Wesnoth is in C++, so why change ?
  • Python tools like the WML suite of tools wan be easily usable directly from the server

Wescamp access via SVN

2 Solutions seem possible:

  • Check the svn every time an user download an addon -> needs to implement the svn access directly from the server
  • Check the svn on a regular basis -> Simple Cron Job

Documentation on svn apis in C, C++ and even python found there: http://svnbook.red-bean.com/en/1.1/ch08s02.html

Given this documentation, the simplest solution(except Cron job) to implement is to use Subversion's Python SWIG bindings (See Examples 8.2 and 8.3). The implementation of these exmaples is far more complicated in C or even C++. By the way, this solution needs one more dependancy.

Client Side

Wesnoth UI

The Client is too simple actually, so i'd improve it by adding some new lists:

  • List of new addons
  • List of most popular (After speaking of this idea on IRC, it's not a good idea after all. Elder addons are the most downloaded but not the best)
  • Search box, looking after title, dates, authors, tags

Those lists would be accessible from a dashboard. This dashboard would welcome the user by showing him updates for addons he previously installed, and/or addons he would enjoy (based on tags).

Each addon should have an expanded view, and a simple view. The simple view is the view by default, clicking on a button "Show me more..." would expand the view.

Expanded view shows more informations:

  • comment by the author
  • tags (given by staff and by the author)
  • list of actual translations (versionned): Ideally translations should be selected by default for the user language, but a menu showing addon's translation and their versions would be great.
  • Date of creation
  • Actually installed on user system ? (if so, an Uninstall button would be great)

Web UI

Each addon server could be accessible via a web interface (on port 80, or 8080).

Most general datas from Wesnoth Addon UI could be reachable from the Web Interface. It includes addons common datas (name, author, tags...) but also sort functionalities, like in the improved client UI.

The web server would be a simple TCP server listenning queries on a given port, integrated directly in the addon server. No use of apache (or even lighthttpd) is required for generating simple HTML pages.

Furthermore, an user account creation could be used to track users'data like "addons installed", "languages used...". After discussing of this with Mordante, it would be optional.


Timeline

  • Incoming...
  • ASAP !

Motivation

I have chosen to participate for Wesnoth because it's one of the greatest Open Source game, given its gameplay, graphics, muliplayer games and last but not least: its community. I know there is a great community hanging out there, so being a part of it, is very pleasing for me.

So, why working on the addon server ? Because it's a very concrete network application (I would like to work as a pro in this area of IT) as client/server. There is a great base to update, polish and add new content. I think it can greatly improve the way people see the addons for Wesnoth, if users find more easily addons they'll like... Well they'll play more and more !

Actual Work for Wesnoth

I've submitted a patch for adding new commandline options, as requested on the forum and wiki. You can found my patch here

Two new options are available with this patch:

-s, --server <host>

Direct connection to any server specified, or try to connect to the first server in user's preferences.

-c or --campaign

Skip Menu, and go directly to the "New Campaign" menu.

--with-replay

Replays the loaded game from --load option.