Student Checklist for FreeBSD Summer of Code Students
This page collects ideas and best practices for students participating in Summer of Code 2015 with the FreeBSD project.
We get a lot of excellent proposals to work on FreeBSD during Google Summer of Code. Although none of the following are required, they can help make your proposal stand out:
- Find a mentor. You'll need to work closely with a FreeBSD developer who is willing to act as your GSoC mentor. If you can find a developer who is willing to commit to helping you, that is a big boost. Every year, we have to reject a handful of proposals because we cannot locate a suitable mentor.
Read the mailing lists. By reading the mailing lists, you'll learn a lot about how the FreeBSD project operates and what kind of people participate.
Talk about your idea in public. The firstname.lastname@example.org mailing list, in particular, is an open forum where many people share ideas about how to improve FreeBSD. By discussing your idea there, you can get feedback that will help improve your proposal and demonstrate that there is interest in your idea.
- Contribute. Send us a patch! Even if it's not accepted, your patch will show us that you use FreeBSD, have the coding skills we need from GSoC students, and have looked at the source code. If you plan to work on the ports collection, port some software to get familiar with the infrastructure.
Community Bonding Period
After applications are accepted, there is a period of a few weeks before the official start of coding on May 19th. We require our participants to take a few simple steps during this period in preparation.
- Talk to your mentor. You'll have to work out with your mentor how you'll communicate (email, IRC, etc), how often (some mentors require daily progress reports, for example), and how you'll work together.
You'll be automatically added to the soc-students@ mailing list. You may also want to join either the freebsd-hackers@ or freebsd-current@ mailing lists to keep in touch with what the larger FreeBSD development community is doing. Your mentor may also want you to join one or more lists specific to the area of your project (net@, embedded@).
Get a wiki account setup on wiki.freebsd.org so you can create a page about your project and keep it updated. When choosing your wiki username, please stick to the FirstnameLastname format. Please note that at the time of writing, new Wiki account creation is disabled - please email soc-admins@FreeBSD.org with your username and they can create the account manually. Your mentor can help you set up access, and they will need to add you to the ContributorsGroup before you can edit pages. If you would prefer to use another site to post updates about your progress, that is OK, but you should still update the wiki with a basic project description and provide links to any blogs or external websites where you will post updates.
- Choose a username you would like to use for the repository. This should be a maximum of 8-10 lowercase ASCII characters. This will become both your email address (@FreeBSD.org) and your username in the repository, so please choose it carefully.
Choose whether you would like to use Subversion or Perforce as the SummerOfCode Source repository you will use for your project. Discuss this decision with your mentor if necessary, though it is likely that most students will opt for Subversion. There are guides for Subversion and Perforce, including a tutorial to walk you through setting up your account and committing your first file. We recognize that some of you may prefer other version control systems, but the administrators would like to keep the number of locations we need to monitor minimal. Students may use tools like git-svn to access the socsvn repository but are required to make regular updates to the Subversion repository in that case.
- Provide the above three pieces of information (your FreeBSD.org username, your wiki username and your repository preference) to both your mentor and soc-admins@
Once you have a wiki account, follow the link for your project at SummerOfCode2014Projects and create a new page, based on the template provided at http://wiki.freebsd.org/SummerOfCode/ProjectTemplate (click "edit" and copy/paste the source code). If desired, create a short page about yourself as http://wiki.freebsd.org/FirstnameLastname (using the same name as your Wiki username) - this isn't required but is recommended as it helps people find out about you.
- If you use IRC, ask your mentor about relevant FreeBSD related IRC channels for your project (IRC is not a requirement, some mentors and some students find IRC very helpful, and others do not).
- Post milestones for your project, in consultation with your mentor, on your project page on the FreeBSD wiki.
- Talk with your mentor about any background reading of code, papers, or book chapters that will help provide context for your project.
- Especially if you are new to FreeBSD, expect to spend some time before the official start of coding becoming more familiar with FreeBSD: Install it, use it, perform a full system upgrade from source code. Projects based on the src tree will usually be developed on the top of the FreeBSD tree (known as "head"), upgrading to this (or at least preparing a VM running head) is recommended.
First Half of the Summer, before mid-term evaluations
If your school schedule does not permit you to start on May 19th, you should carefully negotiate this with your mentor. If necessary, you can raise any concerns with email@example.com.
- Talk to your mentor regularly. Most mentors expect some interaction every day via email or IRC. Make sure your mentor knows what you are doing and what problems you are having.
Submit weekly status reports to the soc-status@FreeBSD.org mailing list.
- Find others in the community aside from your mentor that are working in similar areas or have a particular interest in your project. If beneficial, send them a short introductory mail about yourself and your project. They may be able to suggest things that you haven't yet considered.
Submit code regularly to the SummerOfCode repository. You should commit early and often. You are working in an experimental Summer of Code repository or branch of the tree and it is not expected that code in this is in a finished state. On days where you are actively working on your project it is hoped that you'll submit at least once a day. Many students will make hundreds of commits over the course of the summer.
- Keep your wiki page up to date if necessary.
Second Half of the Summer, after mid-term evaluations
- Submit information about your project to a FreeBSD Developer Status Report to raise awareness of your work. Submissions are expected to be works in progress, so no matter where you are in the process if you passed the mid-term evaluation you are more than far enough along to warrant publicizing your project in the status reports.
- Update your wiki page about the milestones for your project and which ones will be completed by the end of the summer.
In consultation with your mentor, possibly send a mail to hackers@ or another FreeBSD mailing list to announce some details of what you have accomplished so far to a larger audience. In any case, continue to submit weekly reports to the soc-status@FreeBSD.org mailing list.
- Talk to your mentor about the eventual suitability of your project for submission to the main FreeBSD repository. Is the code on track to eventually be included in a future release of FreeBSD?
- Before the final evaluations are due, update your wiki page with a final summary of what you accomplished over the summer.
After the summer
You are encouraged to continue working on FreeBSD in any way you can. If you'd like to keep your SummerOfCode repository account active, mail soc-admins@ in the case of SVN accounts, or p4@ in the case of Perforce accounts. Talk with your mentor and others in the community about follow up projects if you are interested in doing more work or becoming a full FreeBSD committer.
- If your project addressed an idea from the FreeBSD ideas list, mail your mentor and the maintainers about adding a link to your work and/or removing this idea completely if the project is completed and there would be no need for others to do this.