Changes

Jump to navigation Jump to search

GSoC Ideas

349 bytes added, 21:43, 18 March 2014
delete, rearrange, destroy!
This page contains a list of ideas about projects/tasks for the ScummVM and the ResidualVM projects which we feel are relatively substantial (and so appropriate for at least ''part'' of a Google [[Summer of Code]] project), and accessible to newcomers with good C++ knowledge.
This is These are just the few projects that we have come up with ourselves, and there are many many other tasks which would be helpful to the project - many ScummVM engines have their own TODO lists, and some there are large tasks are available related to ResidualVM engines.
Of course, if you are not participating in Summer of Code, you are also very welcome to try working on one of these projects.
__TOC__
== Introduction ==
 
For the first year, [http://www.residualvm.org ResidualVM] will be participating to the Google Summer of Code as a guest of ScummVM. Therefore, we added a note concerning the origin of each tasks so that you can easily determine if some 3D knowledge may be involved in the tasks or not.
The projects below are sketches and ideas. Our project changes over time, so if you're not reading this during the Summer of Code application period, the descriptions might be outdated by the time you read them (although we strive to keep them up-to-date). You should talk with somebody from the team, ideally with someone listed as a possible technical contact, before starting work on any of them.
Most developers are active in our [[IRC Channel]], and that is often the easiest way to ask questions about the tasks and the code in general. '''You should come to our IRC channel and introduce yourself.''' The channel is the main form of everyday communication for the project, and there will almost always be developers there who can discuss your project ideas and answer questions.
== Summer of Code Applications ==The ideas here are meant to be just that - '''ideas'''. You must follow should also consider suggesting your own completely new project ideas, or to suggest a modified version of one of our [[Coding Conventions]]ideas, or a combination of ideas. In particular, note that you can't use Not all the standard C++ library ideas might be substantial enough for code used inside ScummVM itselfthe whole of GSoC, while other ideas might be far too much work. Using it for a non-essential tool should be fine, thoughWe expect you to consider this in your application and proposed schedule.
All codeWhen writing this application, unless stated differently remember that the application has several important purposes. First of all, it should identify the objectives of your project (for example, platform-specific codewhat you intend to get done). Furthermore, must it needs to convince us your project is worth the effort we will be written in clean and portable C++; in particularputting into mentoring it. Last, but not least, various versions of both GCC and Visual Studio must be able to compile it. We also have some [[Code Formatting Conventions]]should convince us that you are the right person for this task.
In particular, your application is your opportunity to show us that you understand what you'll be doing for the task! We only accept clean and maintainable codeexpect you to demonstrate that you've spent some of your own time thinking about it. This is a somewhat vague requirement, but as a rule A good example of thumb, if the code does what it is supposed to we do, but is ''not extensible, a quick hack, or we need '' want to rewrite it from scratch to properly integrate it, we will not accept it. In particular, we would rather have see in your application is a maintainable, clean and incomplete piece copy of code that we could extend, than a complete but unmaintainable piece the text from our version of codean idea's description.
Finally: All of the code submitted You '''must be contributed under ''' read the terms Summer of the GPL v2+Code [[Summer of Code/Project Rules | Project Rules]], which are '''obligatory''' for our students, and tell you what you should do '''before you apply'''. There are also some [[Summer of Code/Students Guidelines | Guidelines]] for our students.
== [[Summer of Code]] Applications ==The ideas here are meant to be just that - We don'''ideas'''. You should also consider suggesting your own completely new project ideas, or t expect you to suggest produce a modified version of one perfect application without any help at all (although of our ideascourse, or a combination of ideas. Not all the ideas might that would be substantial enough for even more impressive), but we do expect you to show some independent insight into the whole of GSoCtask you've chosen, while other ideas might and to be far too much work. We expect you willing to consider this in your application improve it based on our feedback and proposed schedulecomments.
You '''must''' read the Summer of Code [[Summer of Code/Project Rules | Project Rules]], which are '''obligatory''' for our students, and tell you what you should do '''before you apply'''. There are also some [[Summer of Code/Students Guidelines | Guidelines]] for our students.=== Application template ===
Your application should have at least the following information (adapted from the FreeBSD [http://www.freebsd.org/projects/summerofcode.html Proposal Guidelines]guidelines):
* '''Name'''* '''Email'''* '''Online nicks''': Please list the nicknames of the communication channels you plan to use to keep in touch with us. For example, list You should at least add your IRC (on FreeNodefreenode) nick nickname here.* '''Project Title''': State precisely what you intend your project is to be about. 40 characters is usually a good upper limit.* '''Possible Mentor''' (optional)* '''Benefits to the ScummVM Community''': A good project will not just be fun to work on, but also generally useful to others.Why do you think it's a good project for us?* '''Deliverables''': The deliverables will be used to evaluate your progress/success at the mid-term/final evaluations. Thus, so it is 's very important to that you list quantifiable results some clear goals here (this does not need to be a simple list!) e.gSome examples::* "Get scene X in game Y working.":* "Improve feature X modules in ways Y and Z.":* "Fix bug Z in game Q.":* "Write 3 new man pages documentation for the new interfaces."
:* "Improve test coverage by writing X more unit/regression tests."
:* "Improve performance in FOO this game scene by X20%.": Make sure there is a clearly visible set of '''goals''' that need to be accomplished for your project to be considered successful. It is also encouraged to list additional goals you plan to accomplish in the course of your project if everything goes as expected. : You already explained why your project is beneficial for us, however, here you should motivate why be sure to justify whether a goal is required vital for the success of your success project, or just optional. Make , but be make sure not to mix this up with the description of a goal with thisthe goals themselves.: In addition Finally, be sure to the mere goals of your project define describe some '''milestones''', your targets for the project. A milestone should be connected to the progress/accomplishment of goals. You should, at the very least, define 2 (two) milestones here. Again, describe the milestones and elaborate on your reasons for defining exactly these milestones. When you plan to accomplish the milestones will be handled in the schedule and not here.* '''Project Schedule''': Create a proposed schedule with (at least) the granularity of weeks. This schedule should (among other things) explain how long your project will take and when you can begin to work on it, and you should connect the weeks to the Summer of Code schedule, i.e. clearly make the start, mid-term evaluations, etc. visible. There are multiple ways to organize this, we trust you to find the best way to present your schedule. : Obviously we want to see a connection between your goals and your schedule: be sure to elaborate why you think X takes time Y and what possible issues might arise here; obviously your schedule will probably change once you've started working on your project, so we want to know what kind of risks and problems you think might cause such changes. : Last but not least, put a fixed date for each milestone you defined here. We want at least one milestone before the mid-term.* '''Availability''': How many hours per week can you spend working on this? What other obligations do you have this summer?Be honest if you're not going to have time in some weeks (due to exams, or vacation, or other work), and explain how plan to make this up.* '''Skype ID'''
: If you don't use Skype, install it.
* '''Phone Number'''
: Cellular is preferable, for emergency contacts.
* '''Timezone'''
: Where do you live.
* '''Bio'''
: The two main questions you should answer here are:
:* Who are you?
:* What makes you the best person to work on this project?
: Make sure you fill this with some life. We would like to know your age and university year for example. Also, explain your connection to ScummVM in the general and to your project in specific. What experience do you have with C++ or other languages required in your project? Have you taken university courses which you think will be helpful? Did you work on any projects we can take a look at? Do you think you will learn anything from your proposed project (if yes, explain what)?
* '''Pull Request'''
: A link to the pull request you submitted as part of our [[Summer of Code/Project Rules | Project Rules]]
When writing this application=== Coding Rules === You must follow our [[Coding Conventions]]. In particular, keep in mind note that you can't use the application serves multiple purposesstandard C++ library for code used inside ScummVM itself. First of all, Using it for a non-essential tool should identify the objectives be fine, though. All code, unless stated differently (for example, platform-specific code), must be written in clean and portable C++; in particular, various versions of your project, iboth GCC and Visual Studio must be able to compile it.eWe also have some [[Code Formatting Conventions]]. what should be done We only accept clean and maintainable code. FurthermoreThis is a somewhat vague requirement, but as a rule of thumb, if the code does what it needs is supposed to convince us your project do, but is worth not extensible, a slot/mentoring. Last but quick hack, or we need to rewrite it from scratch to properly integrate it, we will not least, accept it should convince us that you are indeed the right person for this task. A good example In particular, we would rather have a maintainable, clean and incomplete piece of what code that we do not want to see in your application is could extend, than a copy complete but unmaintainable piece of our version code. Finally: All of the code submitted must be contributed under the terms of an idea's descriptionthe GPL v2+.
== ScummVM Projects ==
193

edits

Navigation menu