Google Summer of Code 2014
During the Google Summer of Code google will pay students to participate in open source projects - see the link for additional details. Your work will be released under an open source license, in case of STK that will be GPL 3.0. Make especially sure that you fulfill GSoC's eligibility criteria. Carol Smith, the Google's GSoC Program Manager, has a short video where she described the application process for students.
After a very successful GSoC 2013 we were accepted as a mentoring organisation again. That means that students can work on SuperTuxKart and receive money for it. They will be mentored by one of our experienced developers, and get some good work experience to start their career. Note that while SuperTuxKart is a game appealing to younger audiences, the code base is rather complicated, and our suggested tasks will certainly challenge students.
Our list of ideas or suggestions is online. Be aware that this is just a list of suggestions, and that students are welcome to apply with their own ideas. However, the number of experienced mentors is somewhat limited, and our list of ideas was chosen since those tasks would be most beneficial for the development of SuperTuxKart. If you apply with your own idea, please make sure to discuss this with us beforehand.
Sounds great - What should I do?
First of all make sure to have played STK, and have a look at our milestones page to see where we want to go. For any further steps you need at least some basic familiarity with GIT (if you don't have GIT experience, the Pro Git book is a good start, especially the beginning chapters). Our How to use GIT page described how students (and other contributors) and mentors will be working with GIT.
STK consists of two packages: the code package on github, and an 'asset' package which contains all karts, tracks, and other large binary files. Details on how to install are on our wiki. You can also find build instructions here, including guides for compiling from source on all major platforms on the same website. Note that you will not have to work with the svn, all GSoC tasks will be limited to changes to our GIT repository.
Have a look at our coding style and study our code, best using the doxygen pages. Note that the online version is updated irregularly, so best create your own documentation (just start doxygen in the src directory). Even if you should have your own idea, please check out our idea list first.
Getting in touch
The core team typically communicates over IRC and mailing lists. On IRC, we can be found on channel #stk on freenode. We are typically most active on week days from approximately 16:00 to 22:00, GMT -5 time. It is recommended to drop by our channel and idle by to see how things work, and discuss your application. It is also recommended to subscribe to the supertuxkart-devel mailing list and to post a message introducing yourself and your project. Discussing the project with one of the core team members will significantly increase the changes of your application to be accepted.
Code and tickets
The main prerequisite for working on SuperTuxKart is good C++ knowledge. You will also want to get familiar with our bug tracker.
At this stage you need a sourceforge account in order to submit a ticket. The chances of a proposal to be accepted can be increased if you submit a patch first. This allows us to evaluate your coding style, way of documenting etc. Even if you don't find a ticket you want to work on (admittedly many of our tickets would require some work), feel free to open a ticket yourself, and submit a patch for it. One simple example would be to improve coding style issues in a file, or improve documentation - there are still some older files which were not brought up-to-date with latest coding style changes. If you are looking for more of a challenge, try to implement an achievement. The achievement infrastructure is the result of the 2013 GSoC, and achievements will be contained in the next release of STK. So we are always looking for more achievements. Have a look at the files in src/achievements for more details. In any case, please discuss the ticket with us first, we can help in identifying tickets appropriate for your skill level.
Any contributions to SuperTuxKart must be in clean and portable C++. They should also compile without any warnings. We don't expect that a student to be able to check his code on all supported platforms - our community will do this and fix any minor issues that should occur when using a different compiler. Please also have a look at some of our portability advise.
We have started to use travis-ci - which means that as soon as anything is committed to our GitHub repository, travis-ci will compile on linux and report any problems.
How to get prepared for submitting a proposal
If you are new to GSOC, you may wonder where to start. Here are the obvious starting points :
- Play the game! If you spend some time playing SuperTuxKart and get to know the game, you will get insight on the project and your proposal will be of much higher quality.
- Download the sources from git and the assets from SVN ( see Source_control ) and compile the game from sources ( instructions for Windows, OSX and Linux can be found on Get_involved )
- Take a quick look at our Doxygen documentation to get a quick overview of the code. Note that this documentation is not always fully up to date, but the idea here is only to get an idea of what are the various modules of the game and how they relate to each other.
- Decide what you would like to work on. Our ideas list is a good place to start at, but you can also come up with your own ideas (better to discuss them with us before investing a lot of energy on it, though!)
- Investigate on your idea. Get to know a broad overview of the relevant code if possible/relevant; research solutions (algorithms, implementations, designs); think of use cases, possible problems, how to solve them. What will be expected of students is to produce an analysis that shows you understand the problem to solve, and you propose a workable and realistic way to solve it. Identifying constraints, risks, time estimates, explaining design choices, etc. may help produce a more complete analysis. Important to note is that we are not expecting a perfect analysis; demonstrating a good sense of logic and thorough analysis is what we are most interested in finding in students.
How we will help you through this process :
- Don't worry though, you are not alone in the process! We are here to help you in the process of analyzing the task and coming up with solutions. You can contact us on the mailing list or IRC channel as explained in more details later. That being said, it is also important that we clarify how we will be helping you.
- First of all, a starting note. If this year is anything like last year, we expect that a lot of students will be interested in SuperTuxKart - last year we had around 70 proposals. (This does means you will likely have a lot of competition; but don't let that put you down, because a very large part of proposals we received were also low quality. So if you invest genuine effort in a good proposal, you have a very real chance of making it to the top.)
- Because of the high interest, the period where students ask questions are usually very crowded for us. For this reason, and also because want to know what you are capable of without us giving you all the answers, we will focus our help in some specific directions.
- First rule, this kind of email or IRC comment should be avoided : "Hi! I am interested in your project. Where do I start?". Start by showing us that you are capable of starting a project without hand holding. For instance, a much more interesting question would be "Hi, I would be interested in working on project <X>, I was thinking of using solution <Y> but I am not sure if this solution would integrate well in the current code base. I took a quick look at the code and I see that you are using technique <Z>, do you foresee problems I may not have anticipated in integrating <Y> into the current system?"
- Again for the reasons stated above, our role will be to guide you in the right direction, not to give you the answers. We will gladly help you understand our needs and the current implementation (what is currently in place); however we will likely not be as specific when discussing the new portions. The reason for this is of course that we are interesting in seeing what you can bring to the table.
- In later phases, you can show us a draft of your proposal for review, and we will comment on ways you can improve it. For obvious, we will not compare you to other students. Due to time constraints, we are also unable to repeatedly review your proposal drafts, therefore please make sure the draft is in an advanced state before asking us for a complete review. Of course common sense applies here, if you rewrite a specific of the proposal after the initial review we can take another look at this specific section. We will however generally not fully review a student's proposal more than once
Make sure to follow the instruction on the official GSoC website about submitting your application (particularly note that the application goes to google, not to us). They also list the information that are necessary from google point's of view.
Applications should contain at least the following points of information :
- Contact details: Email, irc nickname, sourceforge ID, what time zone you are in and when we can talk to you on irc
- Some background on you, who you are
- Details about your software development experience: University experience, and other experience you have - esp. with other open source projects/
- What platform do you usually work on?
- One-line project summary
- Detailed project description (a few paragraphs to one page)
- A rough roadmap and timeline of the planned development
- Before the actual programming start, we want to have a more detailed timeline, including milestones/deliverables
- Availablity – how much time per week would you spend on the project. Do you have any other commitments during the GSoC time (e.g. any holidays planned, exams, ...)?
- Optional: ticket number and patch you have supplied
I have a much better idea for a project - can I submit my own idea?
You certainly can. Though please discuss your idea with us first, since we want to make sure that your idea has the right size for a GSoC project, and also that this is not something someone might already be working on. Be also aware that the projects we have identified will be the ones the community is mostly interested in, and we have only limited amount of mentors to support additional projects.
What license must I use for my code?
Your code should be released under GPL v3, which is the license all code of STK is using. We might request that you agree to release the code under a dual license, but at this stage we don't know the exact details. Background is that GPL is not compatible with IOS Apps store license, so if we want to port STK to IOS, we need to release the code under a second license (see also next question).
I want to port STK to IOS.
While this is basically a good idea, there are several problem:
- The current license used for all code (GPL v3) is not compatible with IOS Apps Store license, so you will not be able to publish STK in the Apps store.
- We expect that extensive work on assets (tracks, karts, textures) is necessary in order for STK to run fast enough on a tablet. Art work is not accepted as part of GSoC, nor are we sure that we have the capacity to do this in the available time. So it would be nearly impossible to judge if a port was successful.
How often do I need to be in contact?
We expect accepted students to be in contact with their mentors at least once every week as a minimum. If you for some reason can't contact your mentor for over a week you need to state this beforehand including why you can't make it. Simply disappearing without stating a valid reason may result in not getting a passing evaluation.
I have a problem with my mentor.
We have tried to match the skills and mentors to the students and their tasks. If there should be a problem with a mentor, first of all try to talk with your mentor about any issues you have. Each student's requirements are different, and just letting your mentor know that you need (more/less/...) help, advise might be enough. If this doesn't resolve your problem, feel free to contact any other mentor (hiker, auria, funto, stephen), or admin (hiker, auria).
Can I contact other people/mentors to discuss ideas?
You certainly can. Talking with other developers about ideas or problems will greatly help to improve the quality of your work. Some of the best ideas came out of such discussions - we all like brainstorming (and as a results of which we mostly have too many good ideas, and not enough time to implement half of them ;) ). Also just the fact that you are describing your problem to someone else will often help you to find a solution yourself, something worth learning and remembering ;)