Difference between revisions of "Disruption Simple Content Manager"

From The Battle for Wesnoth Wiki
m (SoC application)
m (SoC Application)
Line 127: Line 127:
  
 
=SoC Application=
 
=SoC Application=
http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/disruption/1
+
[http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/disruption/1 Disruption SoC Application]

Revision as of 17:23, 31 March 2011


This page is related to Summer of Code 2011
See the list of Summer of Code 2011 Ideas



This is a Summer of Code 2011 student page



Description

Disruption - Simple Content Manager

Brief: I want to write a Java Simple Content Manager. The most important thing about it would always be simplicity in terms of not requiring technical knowledge at all, so potential contributors in areas like graphics, music, or other artwork could join the community and help with ease.


The idea is developing the project in a Java environment, as java is supported in most OS(Apart from Mac, Unix and Windows, it can also be used in most mobile platforms and systems). Another reason for choosing java is that is very easy to design a cute GUI that don't scares the user away, and also the GUI adapts its “look and feel” to the system it is running in, so the user sees it like another of his programs, rather than an external, strange tool. In terms of programming, as described before, the idea is taking a MVC approach, implementing first the view, and preparing then a modular controller for all the functionality needed. As Java has JUnit tests and a powerful debugger, it's easy to track down bugs and fix them, as well and check that every part works correctly and incrementally, so you can be sure that a new functionality doesn't break an older one(As you can add tests while you develop, so you always execute 100% of the tests).

IRC

"Disruption"

Questionnaire

1) Basics 1.1) Write a small introduction to yourself. I'm both a gamer and a programmer. Finishing my University studies being only 23 years old I want to dedicate my life to the world of game programming. 1.3) If you have chosen a nick for IRC and Wesnoth forums, what is it? Disruption 1.4) Why do you want to participate in summer of code? I think it's an interesting way of getting to know how big projects work, by directly participating in them. 1.5) What are you studying, subject, level and school? I'm finishing my studies on Computer Engineering, which is a 5-year career here in Spain. 1.6) What country are you from, at what time are you most likely to be able to join IRC? I'm from Spain, and in Summer I'm able to join IRC all day around from 9:00h to 23:00h GMT+1 1.7) Do you have other commitments for the summer period ? Do you plan to take any vacations ? If yes, when. I don't have any other commitments nor will go on vacations.

2) Experience 2.1) What programs/software have you worked on before? I have worked developing php/mysql webpages, as well as programs in C,C++, Java, Objective C(for Mac, and iOS), and many others. I have used many IDEs, like Eclipse, Netbeans, JDeveloper, XCode, Bloodshed's DevCpp, and also Kate Editor for Linux environments(Which adds a console to the text editor so you can quickly compile and test) for it's simplicity and lightness. 2.2) Have you developed software in a team environment before? (As opposed to hacking on something on your own) As part of my University training I have had to develop software forming teams several times, following the standard procedure: elaborating diagrams, iterating using something like SCRUM, preparing all the design documents, documenting the code, etc. One of the main projects developed in team was a frame for online flash game uploading, playing, and rating, such as what you can find in www.kongregate.com, using java implemented web services called through nuSoap and a php bridge to call them from flash, and also a test flash game which implemented all that with some level of playability.

2.3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why? No, I have never participated in GSoC. 2.4) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement. I have helped in some open source projects, such as kradview(A medical image visor) providing a few patches or gestas(A free web-based association management frame) as main developer.

2.5) Gaming experience - Are you a gamer? 2.5.1) What type of gamer are you? I play a lot, but a game must have that little “something” that makes you play for a long time to hook me up. If not, I usually play a few minutes, and leave the game forever. 2.5.2) What type of games? I play any kind of games, wheter it's RPG, RTS, Turn-Based Strategy, Arcade, FPS, Graphic Adventure... I think all of them have pros and cons. 2.5.3) What type of opponents do you prefer? It's always better to play against other humans, but AI is useful to be able to play without network connection, or when nobody is available.

2.5.4) Are you more interested in story or gameplay? I think that the best is a good balance between them. A game with nice gameplay but awful story will make you feel like you are always doing the same, as the story doesn't really keep you playing. On the other hand, a game with a good story, but awful gameplay will lead to a bad playing experience due to it's frustrating play mode. Both ways the game end up unplayed after a while, which is just wrong.

2.5.5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer. I played Battle for Wesnoth when it was around version 1.24. I really enjoyed playing it, but due to my university studies being a bit overwhelming I had to stop playing. I loved both single and multiplayer modes, but at the moment I played multiplayer was very buggy(Connection was lost regularly, and multiplayer failed suddenly) so it was difficult to finish a game, and it ended up being somehow frustrating.

2.6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for GSoC. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so. I have never submitted any patches for Wesnoth. 3) Communication skills 3.1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English. I can write English fluently.

3.2) What spoken languages are you fluent in? Spanish and English 3.3) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough. Yes. Some players are difficult to treat, mainly because they are actually children, or just have bad behaviour, but it's important to be able to separate manners from messages, so even if the player is being ill-manered you can understand the reasons behing it's complaints.

3.4) Do you give constructive advice? I think constructive advice is the ONLY advice possible. It's good to say what's wrong, but it's better if you say how'd you fix it. Saying that something's wrong or could be better is very easy, but doesn't usually help anyone.

3.5) Do you receive advice well? Receiving advice is the only way for improving or actually reaching a positive end, so, all advice is welcome.

3.6) Are you good at sorting useful criticisms from useless ones? All criticisms are “useful” in some way(Except the ones saying “This sucks” or similar). If the critic actually talks about a failure, thing that could improve, or something similar, it can always be refined so you get at least some ideas for future fixes/features.

3.7) How autonomous are you when developing ? Would you rather discuss intensively changes and not start coding until you know what you want to do or would you rather code a proof of concept to "see how it turn out", taking the risk of having it thrown away if it doesn't match what the project want I'm very autonomous when developing, taking some decisions “on the fly” to shorten develop times, but only if the decision is not critical, or it can be easily reimplemented. For high-level or important decisions is always better to ask first, code after.

4) Project 4.1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on? I chose the idea “Create a simple content manager frontend for non-technical users”. I think it's a great idea to have a way for less-technical contributors to be able to collaborate. 4.2) If you have invented your own project, please describe the project and the scope.


4.3) Why did you choose this project? It seems very interesting. I think that for an open source project, the fact of broadening the number of persons able to collaborate, in this case by simplifying the needed tool, is one of the most important things. 4.4) Include an estimated timeline for your work on the project. Don't forget to mention special things like "I booked holidays between A and B" and "I got an exam at ABC and won't be doing much then". The development should be in a MVC way, so View and Controller are clearly separated. First the View design and development will come, in order to polish it and find what the final controls available will be. Next, callback functions in GUI items will be set, and all functionality will be implemented in a way as modular as possible to help maintainability. Apart from two or three exams in June, I'm free most of the day, most of the week, so I'll be able to work at a steady, regular rate, in order to finish everything in time. 4.5) Include as much technical detail about your implementation as you can The idea is developing the project in a Java environment, as java is supported in most OS(Apart from Mac, Unix and Windows, it can also be used in most mobile platforms and systems). Another reason for choosing java is that is very easy to design a cute GUI that don't scares the user away, and also the GUI adapts its “look and feel” to the system it is running in, so the user sees it like another of his programs, rather than an external, strange tool. In terms of programming, as described before, the idea is taking a MVC approach, implementing first the view, and preparing then a modular controller for all the functionality needed. As Java has JUnit tests and a powerful debugger, it's easy to track down bugs and fix them, as well and check that every part works correctly and incrementally, so you can be sure that a new functionality doesn't break an older one(As you can add tests while you develop, so you always execute 100% of the tests). 4.6) What do you expect to gain from this project? I want to gain experience working in a big community for a project that has been working successfully for a long time and is well stablished. I think I will learn a lot from it. 4.7) What would make you stay in the Wesnoth community after the conclusion of SOC? If I actually get to know the people developing Wesnoth(via IRC) and I feel comfortable with the community I will probably keep coding at one level or another.(Developing at big scale, or just making little bug fixes).

5) Practical considerations 5.1) Are you familiar with any of the following tools or languages?

  • Subversion (used for all commits)

I have used SVN in a lot of projects

  • C++ (language used for all the normal source code)

I have a lot of experience developing in C/C++

  • STL, Boost, Sdl (C++ libraries used by Wesnoth)

I have used SDL a bit, never used STL of Boost.

  • Python (optional, mainly used for tools)

Very low knowledge of script language Python

  • build environments (eg cmake/scons)

A bit of knowledge in the cross platform make CMAKE

  • WML (the wesnoth specific scenario language)

No experience at all

  • Lua (used in combination with WML to create scenarios)

Some experience programming scripts in LUA 5.2) Which tools do you normally use for development? Why do you use them? I usually use the lightest IDE I can find when it comes to C/C++ development, as I don't need tons of contextual advice or memory/processor consuming plug-ins. (i.e. Kate editor for Unix). When it comes to Java, due to it's high amount of classes and methods, IDE's like Eclipse or JDeveloper, with plug-ins and contextual method help are a must for quick development. For other languages, like Objective C, the only choice is XCode, so there's not much reasoning involved in the election. 5.3) What programming languages are you fluent in? C,C++,Objective C, Java, PHP

SoC Application

Disruption SoC Application