GSoC 2013: Difference between revisions

From OpenHatch wiki
imported>Paulproteus
No edit summary
imported>Paulproteus
Line 5: Line 5:
 
=== Training missions, version 2 ===
 
=== Training missions, version 2 ===
   
  +
The OpenHatch training missions are a very [https://openhatch.org/blog/2012/1137-people-have-learned-free-software-skills-with-the-help-of-openhatchs-training-missions/ popular] way to learn the skills it takes to contribute to open source software. In the years that have passed since the first version was deployed, we've learned a lot; and this summer, you can work on that!
- Oppia
 
  +
- port to use django models
 
  +
The current framework is limited by the fact that one must write new Python code for each training mission, and that forking the training missions is complicated. There is a new open source online learning framework called [http://code.google.com/p/oppia/ oppia] that we could plug in. It would give us all the following advantages:
- port training missions over to it
 
  +
- write documentation
 
  +
* The training missions could be seen, and edited as text, right on the web.
  +
  +
* Training missions can be ''forked'' by individual open source projects who want to customize the missions for their own purposes. This will allow communities to create (for example) a git training mission that suits their precise workflow, based on a high-quality starting point.
  +
  +
Your work this summer would be primarily in the code. In particular:
  +
  +
* ''Database engines'': Oppia is written for Google App Engine. You would work with one of its main authors as well as a mentor within OpenHatch to make it able to run on non-App Engine data stores. (Probably, the best way is for Oppia to provide support for pluggable storage classes.) You would need to make it compatible with Django models, so it can run on the OpenHatch deployment.
  +
  +
* You would need to port the existing training missions to this framework. This would require careful consideration; but the result would likely be ''less'' code!
  +
  +
* If there is time, you could build up to 3 new training missions with this new framework. IRC, Mercurial, and joining-a-mailing-list seem like the most important three.
  +
  +
To get started, try one of the existing [https://openhatch.org/missions/ missions] to get a sense of what they are like, and get on #openhatch and say you are interested!
   
 
=== Data-driven mentorship app ===
 
=== Data-driven mentorship app ===

Revision as of 18:16, 29 March 2013

GSoC 2013

Ideas

Training missions, version 2

The OpenHatch training missions are a very popular way to learn the skills it takes to contribute to open source software. In the years that have passed since the first version was deployed, we've learned a lot; and this summer, you can work on that!

The current framework is limited by the fact that one must write new Python code for each training mission, and that forking the training missions is complicated. There is a new open source online learning framework called oppia that we could plug in. It would give us all the following advantages:

  • The training missions could be seen, and edited as text, right on the web.
  • Training missions can be forked by individual open source projects who want to customize the missions for their own purposes. This will allow communities to create (for example) a git training mission that suits their precise workflow, based on a high-quality starting point.

Your work this summer would be primarily in the code. In particular:

  • Database engines: Oppia is written for Google App Engine. You would work with one of its main authors as well as a mentor within OpenHatch to make it able to run on non-App Engine data stores. (Probably, the best way is for Oppia to provide support for pluggable storage classes.) You would need to make it compatible with Django models, so it can run on the OpenHatch deployment.
  • You would need to port the existing training missions to this framework. This would require careful consideration; but the result would likely be less code!
  • If there is time, you could build up to 3 new training missions with this new framework. IRC, Mercurial, and joining-a-mailing-list seem like the most important three.

To get started, try one of the existing missions to get a sense of what they are like, and get on #openhatch and say you are interested!

Data-driven mentorship app

Right now, when a new contributor shows up to an open source community,

You would work with us on a mentor-mentee tracker that can be used all across the year, not just during a summer of code.

When people show up

If you, as a student, want to work on this, the best first step is to ask Asheesh for screenshots of Ubuntu's similar tool used by the Developer Advisory Team. Then he can talk you through it in more depth.

Volunteer opportunity finder, version 2

Volunteer opportunity finder v2

Modernize the OpenHatch Django codebase

Right now, the OpenHatch codebase can be described as a tangled mess of the best Django practices we could pick up in 2009. Do you want to learn about refactoring by trying it with a real codebase?

We do have high test coverage. That will help you dramatically if you want to take on this task! That is, the test coverage is what will keep you sane.

If you're excited about code quality, over the summer, here is kind of thing we'd like to see:

Discussing code style guidelines with us, coming to a consensus, and then documenting them. After we adopt and document them, we can look for tools that would help automatically find violations (like pep8.py or a specially-configured pychecker), and then you would work to keep the codebase working while making a sequence of small changes that fix these issues.

Make a diagram of our circular imports, and then propose a plan to decrease how circular they are. (You can use tools like http://chadaustin.me/2009/05/visualizing-python-import-dependencies/ to visualize the import dependencies.) Then, in small patches, move (or remove) code to simplify the import chain.

In the second half of the summer, we recommend reading through the custom code we have, and consider if a Django reusable app can replace it. I expect that in a large number of the cases, you can find external code to replace most of the OpenHatch app. (-:

Additionally, if you are excited about Django's new class-based views, you could consider porting the OpenHatch views to be class-based.