GSoC/2016/Instructions

This page is based on the instructions page of 2015.

These are instructions for students who would like to apply for a project with phpBB.

= General Instructions = All participants should take a look at the Summer of Code student manual every now and then to be informed about updates and advices. It is also important to read the Summer of Code FAQ, as it contains useful information. Pay special attention to the Eligibility section of the FAQ.

When submitting your GSoC application, please include your GitHub username, phpBB username and IRC username if you have any so that we know who you are.

= Development Information = phpBB's development is discussed on the Area51 development discussion board. Anyone can post RFCs for changes and new features there and discuss them. Bugs are reported on the ticket tracker and the code is versioned using git on GitHub. The phpBB repository is located at github.com/phpbb/phpbb.

phpBB's current stable version is 3.1. Most development work is currently focusing on finishing 3.2, the next feature release, and adding new features for 3.3. Many people have posted RFCs for new ideas that still need discussion and have yet to be implemented. If you participate in Google Summer of Code your project will most likely end up in 3.3.

Website Ideas
If you're intending to submit an idea related to our website then instead of our main #phpbb-dev IRC channel you should be using our #phpbb-www IRC channel which is specifically tailored to website discussion. Our main website is located at phpbb/phpbb-website however some parts are still closed source so not all tickets on our bug tracker are applicable.

The best thing to do is to work on submitting some pull requests for bugs to phpBB itself. We can then use those to to assess your abilities. Our website contribution workflow is very similar, although the website is usually rather focused on larger projects compared to 'small tasks" like bug fixes in the core.

It is highly recommended for website proposals that you discuss your proposal with one of the website mentors (Michael or Yuriy) via email, or preferably IRC (#phpbb-www), before submitting them. Whilst this is not essential it is highly recommended and the past has shown that people who did this submitted better proposals and were more likely to be selected.

= Recommended Steps =
 * 1) Read Google's instructions for participating
 * 2) Come up with a project you're interested in
 * 3) * Take a look at the list of ideas
 * 4) * Peruse existing RFC topics here
 * 5) * Propose an entirely new idea
 * 6) Write a first draft proposal and get someone (e.g a fellow student) to review it for you
 * 7) Submit it using Google's web interface

Coming up with an interesting idea is probably the most difficult part of all. It should be something interesting for phpBB, for open source in general and forum users in particular and for you. It also has to be something you can realistically achieve in the time available to you.

Finding out what the most pressing issues are is a good start. You should join the Area51 development discussion forum and check out our IRC channel #phpbb-dev on Freenode: you can make acquaintance with developers and your potential mentor, as well as start learning the codebase. We recommend strongly doing that and we will look favourably on applications from students who have started to act like open source developers - see the next section.

= Start Participating = If you decided to apply to phpBB, or are seriously considering it, you should try to fix a small issue to familiarize yourself with the development process.


 * 1) Join the Area51 development discussion forum.
 * 2) Join our IRC channel #phpbb-dev on Freenode. This is where real time development discussions happen.
 * 3) Find a small issue to fix. You can try this list of easy to fix issues, search the tracker yourself or ask on IRC what you can fix.
 * 4) Create a GitHub account and fork the phpBB repository. See Git for further information about phpBB repositories.
 * 5) Make the changes necessary to fix the issue. Be sure to create a feature branch and follow our coding guidelines and commit message rules.
 * 6) Create a pull request on github.
 * 7) Update the ticket with your pull request url.
 * 8) Request review of your changes on IRC.

= Continue Involvement = After you fix a bug and submit a pull request, it is a good idea to continue being involved with the project, by being in #phpbb-dev IRC channel and periodically checking and perhaps posting on area51 forums. This gives phpBB developers an opportunity to talk to you about the changes you submitted in your pull request(s), as well as about your GSoC application. You will gain a better understanding of how phpBB development happens and will be more prepared for a productive and successful summer.

Historically, applicants that were active in IRC tended to submit better proposals and were more likely to be selected.

Remember that active phpBB development discussions often happen in IRC.

= Student Proposal Guidelines = A project proposal is what you will be judged upon. So, as a general recommendation, write a clear proposal on what you plan to do, what your project is and what it is not, etc. Several websites now contain hints and other useful information on writing up such proposals.

While phpBB does not require a specific format or information in proposals, proposals are evaluated roughly in two dimensions:
 * What is the scope of the project?
 * Is the submitter likely to finish the project in the allotted time?

Technical
Your proposal should include enough technical details that the mentors can visualize the entire project and roughly estimate how long it would take you to complete. Here are some specific points that you should address in your application:


 * Explain the problem that you want to solve.
 * Explain the benefits that solving this problem will bring to users or phpBB.
 * Break down your project into component parts. Make a list of the parts.
 * Which parts depend on other parts? Which can be worked on concurrently?
 * Which parts are essential to your proposal?
 * Which parts can be omitted if development takes longer than you expect?
 * Develop a rough timeline. It should account for design, development and testing of each component part. Be sure to build in time to adjust the code based on reviews, and to fix bugs found in testing.

Personal
The second part of evaluation looks at the likelihood of you completing the project you wish to attempt. Your proposal should match your experience level. Be honest; most software projects are late and over budget, and it is guaranteed that during GSoC you will encounter issues you did not think of while writing your application. If in doubt, be conservative: a smaller project that gets finished is better than a more ambitious project that is abandoned.

You can include the following information in your proposal:


 * Who are you? What are you studying?
 * What experience relevant to your proposal do you have?
 * Why are you the right person to implement your proposal?
 * Have you used phpBB?
 * Have you modified phpBB?
 * Have you submitted any patches to phpBB, and have any of them been accepted?
 * How many hours are you going to work on this a week? 10? 20? 30? 40?
 * Do you have other commitments that we should know about?
 * What is your GitHub username, phpBB username, IRC username?
 * What time zone are you in?
 * Are you comfortable working with a mentor who is several time zones away? Have you worked in this style before?
 * How will you track your work?
 * What is your native language?
 * Where do you live, and can we assign a mentor who is local to you so you can meet in a coffee shop for lunch?

Review
After you have written your proposal, you should get it reviewed. Do not rely on the phpBB mentors to do it for you via the web interface: they will only send back a proposal if they find it lacking. Instead, ask a colleague or a developer to do it for you.

You can also request public review on area51 or in #phpbb-dev IRC channel (or #phpbb-www for website proposals), if you wish to make your proposal public.

It is highly recommended for website proposals that you discuss your proposal with one of the website mentors (Michael, Yuriy or Paul) via email, or preferably IRC (#phpbb-www), before submitting it via the web interface. Whilst this is not essential it is highly recommended and the past has shown that people who did this submitted better proposals and were more likely to be selected.

Final Checks

 * Is your proposal detailed?
 * Does your proposal include a timeline?
 * Have you submitted a patch to phpBB?