Outreach programs/Life of a successful project

How to have a successful project in the context of GSoC or Outreachy.

Definition of success

 * Intern completes the project goals as defined in the proposal (they may or may not have evolved over the course of the project), has built a network of friends and contacts in the community, and has a plan to continue contributing as a volunteer.
 * Mentors integrate the outcome of the project, get the new contributor involved in other initiatives, and want to mentor again.

Choosing Wikimedia
Choosing the right organization and a project of your interest is primary for the success of the program. Following some basic steps, if you want to spend your vacation with Wikimedia, would be: You can always checkout the handouts for starters: In short, you can find answers to your queries in either of : Welcome, and be part of something big.
 * 1) Join #wikimedia-dev and #mediawiki IRC channels on Freenode. Developers and community members hang out there, and if you want to get noticed, this is the best place. You can introduce yourself as a beginner over there ( if applicable ) and ask for guidance. You can find the instructions on how to join an IRC channels here  and see the complete list of Wikimedia IRC channels here
 * 2) Join the Wikitech-l mailing list. This is important so that you get updated with various announcements regarding Wikimedia in general and your GSoC/Outreachy program. You should also consider joining the mailing list for GSoC and/or Outreachy themselves.
 * Starter kit for new Wikimedia tech volunteers.
 * How to become a MediaWiki hacker is a good place to start learning your skills and becoming a better candidate.
 * Lessons learned for mentorship programs is particularly useful when you start writing your application.
 * 1) Discussion page of Outreachy Programs
 * 2) #mediawiki and #wikimedia-dev IRC channels
 * 3) All possible projects are connected with a Phabricator task, you can comment/subscribe over there.

Submitting your proposal
You should be able to find the right project for you in either of: Find two mentors, usually one more technical oriented, the other one more product/community oriented. For mentors, it takes approximately from 2 to 5 hours a week depending on the phase of the program (onboarding, mid-term evaluation and end of project are more demanding times). Few steps to help you get the right mentors would be: Recommended steps to get your proposal up for evaluation would be: Check out general pointers for Where to start.
 * 1) Possible-Tech-Projects in Wikimedia Phabricator contains list of featured project ideas, which have went through one or more phases of discussions
 * 2) Search in pool of open bugs in Wikimedia Phabricator for a task which match your interest and skill. You can suggest your idea in the task as a comment, and associate it with the tag Possible-Tech-Projects so that the community will evaluate its feasibility
 * 3) Bring in your own idea, creating a new Phabricator task for it with a draft. This would require enough know-how of the community and ecosystem though.
 * 1) Comment on the project task that your project lacks a mentor, and you are in search of one. Ignore this step if you already have someone already listed in the task description
 * 2) If no-one turns up, craft a mail to Wikitech-l mailing list that your project lacks a mentor, and ask for volunteers to come up and help you
 * 3) If you are still stuck, contact one of the organization admins for GSoC/Outreachy programs for Wikimedia, and put up your concern.
 * 1) Create a mediawiki.org user page with relevant details
 * 2) Draft your project creating a new task following the proposed application template. If you proposal addresses an existing project idea published in Phabricator, then you just need to click "Create subtask" in the project idea task. This will add automatically the projects and the subscribers of the project idea to your proposal.
 * 3) Try to pick a short, memorable and catchy title which communicates your core idea on how to tackle the issue/project you chose.
 * 4) Associate your proposal to the Phabricator project(s) related to the program you want to apply, Outreachy-round-11
 * 5) The GSoC student guide is a good resource for anybody willing to write a good project proposal. And then there is a list of DOs and DON'Ts full of practical wisdom.

Community bonding period
All accepted interns go through a community bonding period prior to the official start of the project. The purpose of this phase is to familiarize yourself with the tools, mentors, and the community that will help you during your project.

Requirements: The first payment comes after completing this phase successfully.
 * Detailed plan agreed with your mentors.
 * Phabricator project created (instructions).
 * Meetings with mentors started.
 * Bonding period report published.

Bootstrapping a project
The newly created Phabricator project is filled with new tasks as the planning process identifies them. This is how it goes:

After a new Phabricator project is created, interns and mentors should add themselves as watchers in order to follow all its activity. Then,


 * 1) One task is identified as main task of the project, and will remain open until the project is completed. This task is usually the initial project idea (if there was one) or the task of an accepted proposal.
 * 2) * The main task is assigned to the intern leading the project.
 * 3) * Only the main task is associated with the related outreach program project (GSoC, Outreachy...)
 * 4) If there are other proposals for the same project, they are marked as duplicates of the main task. This moves all the subscribers to the main task.
 * 5) Only the main deliveries of the project are marked as subtasks of the main task. This includes main features and the evaluation tasks.
 * 6) The rest of tasks can be created as subtasks of subtasks, or simply as tasks on their own, always associated with their project.

The main task should receive only few and general comments about the project. Ideally the day to day discussions should be posted in their own specific tasks.

The reasoning of this organization is to keep the amount of project labels and notifications sane. Users interested in the progress of one project can subscribe to the main task only, and those willing to follow it closely can become watchers. Meanwhile, those interested in the general progress of a GSoC or Outreachy round can just watch the program project, receiving notifications only when one of the main tasks has updates.

Reporting
Reporting is very important for the followers of your project, your mentors, and yourself. Investing a few minutes reporting on a weekly basis will save you a lot of time and energy.

For the weekly reports, please create a Phabricator task and associate it with your project. Insert a table with the date and report columns in which you'll write your weekly report. Write your reports as telegrams, always linking to the areas of progress: tasks, patches, demos, documentation pages... It is better to deliver short or even incomplete reports on a weekly basis than trying to elaborate the best deep weekly report but then get stuck and not deliver it at all... Two good examples of weekly reports can be found at

Weekly reports might look like: There are three special reports to be delivered at the end of each evaluation period: community bonding, mid term, and final evaluation. These reports should be more extensive, like blog posts, targeted to readers having no clue about your project. Add a bit of background information, all the basic links, and if possible screenshots or other graphical elements. Again, you will see that these reports are not just useful for other, but also for yourself. They help you reflecting about your own work, and they usually help you realizing what went well, and what did you learn.
 * User:Sputniza/OPW Progress Report
 * User:Ankitashukla/Progress Reports

A typical community bonding period report might contain:


 * Work done (environment setup, links to patches merged etc.)
 * Lessons learnt
 * Problems faced and solutions found
 * Any changes to the original plan
 * Minimum Viable Product for the project decided
 * Communication plan with mentor decided

Mid-term evaluation
Requirements: The second payment comes after completing this phase successfully.
 * Weekly reports up to date.
 * Patches published and accepted (or equivalent for non-coding projects).
 * Regular meetings with mentors.
 * If there is a delay in expected deliveries, plan updated accordingly.
 * Full-time routine established

End of program evaluation
Requirements: The third and final payment comes after completing this phase successfully.
 * Weekly reports up to date.
 * In sync with mentors.
 * Full-time routine.
 * Project completed, or at least a functional prototype.
 * Tasks created for known bugs, missing features, and suggested improvements.
 * Documentation for users and contributors.
 * Wrap-up report.
 * Summary in Past projects page (GSoC, Outreachy).

Consolidation as contributor
(Coming soon.)