GSoC 2014 Ideas

Christopher Baker edited this page Feb 20, 2015 · 45 revisions

This page to collects ideas for suggested openFrameworks student projects for participation in Google Summer of Code 2014

If you're active in the openFrameworks community: If you have an idea that you would feel comfortable mentoring, feel free to add it. If you have an idea but need to find a suitable mentor, please bring it up on the oF mailing list; others can help you develop the idea and may volunteer to mentor.

If you're a prospective GSoC student: Read through the ideas and see if any interest you. But note that these are ideas, not project proposals; they may need details filled in or expanded to make a good project. Find an area that interests you and start a discussion on the oF-dev mailing list, even if it's just by asking more about the topic. Also, keep in mind that this list is just a starting point - some of the best projects are those that greatly expand on a proposed idea or are blue-sky proposals not mentioned on the ideas list at all.

A good proposal will be clear about the problem to be solved, the history of work in that area, and the specifics of the approach that the GSoC project will take. You can find some of those answers by reading the code and the issue tracker and searching the list archives, but discussing the idea with interested developers is a great way for both the student and mentor to reach an understanding of exactly what is to be accomplished. (Content adapted from git's excellent GSoC 2013 list)


Ideas:

openFrameworks project generator

Brief Description: A redesign for the OF Project Generator was recently proposed that simplifies the process, handles more use cases, and is more informative about what the process of preprocessing, compiling, and linking actually involves. This project would involve reviewing and tweaking the proposed design and implementing the functionality. It would be composed of two parts, a back-end app (with command line control) and a GUI app.

One of the largest challenges with getting beginners interested in C++ programming is dealing with different IDEs and making it easy to create new projects, modify existing projects, and deal with things like include paths, linking options and scripts to move resources around. This project will help address that, to allow users to spend less time fixing compile issues and more time sketching in code.

Expected results:

The creation of a library for parsing, modifying and saving project files for common IDEs. A graphical front end specific to openFrameworks that extends the current project generator with a host of new options and improvements.

Skill level: medium

Proposed by: Zach Lieberman (ofZach)

Possible mentors: Zach Lieberman, Patricio Gonzales Vivo

Apothecary: library dependency potion handler

Brief Description: Dan Wilcox created an OpenFrameworks library apothecary that mixes formulas and potions to build and update the C/C++ lib dependencies. It's basically a simple build system using Bash scripting inspired by Homebrew. Individual libraries are separated into formula scripts which abstract the download, build, copy, and clean actions to increase flexibility and maintainability. The main apothecary script processes these formulas, runs the appropriate actions, and puts things "in the right place".

It could use some updating and extending of functionality, adding more scripts for support of more platforms.

https://github.com/danomatika/apothecary

Prerequisites: Knowledge of C/C++, Bash scripting.

Skill level: medium/high

Proposed by: Zach Lieberman

Mentor: Write to the oF-dev mailing list.

Testing framework for openFrameworks

Brief Description: Come up with and implement a good and comprehensive automated testing system for oF. This is an effort which would greatly help OF development (as we could continually check PRs for breakage), but is of sufficient size and complexity to not be done in a week or so.

The challenge lies in both that OF, running on 5+ OSes, is heavily cross-platform (so it's tricky to get good coverage), and that much of the output of OF (sound, images, videos, network communication) is not easily testable with traditional (unit) tests. See issue #1068 for some discussion and some preliminary work with cpptest on the topic.

Expected results:

  • An automated testing script/program (preferable using an established testing framework) which can be run either manually on multiple platforms or during a run of the build server, and is easily extensible.
  • Written tests for a significant/meaningful portion of the OF codebase.

Prerequisites: Knowledge of software testing will certainly be useful. Language will probably be C++, or maybe Python.

Skill level: medium/high

Proposed by: Christoph Buchner (bilderbuchi)

Mentor: Theo Watson

ofSketch

Early prototype ofSketch

An early prototype video is here.

Brief Description: Further develop a browser-based Processing-like IDE for openFrameworks. This IDE, modeled after the Processing IDE is meant to allow users to quickly test short sections of code and create sketches. Ideally it will be well-integrated with the Project Generator (see above).

Expected results:

  • A simple sketch-based openFrameworks IDE that runs in the web, allowing users to program quickly, access documentation and try their ideas quickly without the need to setup a complicated IDE like XCode.

Prerequisites: Knowledge of web interface design will be useful, UI/UX experience will be very useful, and experience with the openFrameworks core will also be useful, but not required.

Skill level: medium

Proposed by: Christoph Baker (bakercp)

Mentor: Christopher Baker (bakercp)

ofxaddons.com

Brief Description: Updates to ofxaddons.com, the directory of extensions and libraries for the OpenFrameworks creative coding toolkit. This would involve discussion, conceptualization, design, and implementation of improved functionality and interface.

Prerequisites: Web development, frontend is built with HTML/CSS/JavaScript, backend is written in Ruby.

Skill level: low/medium

Mentor: Write to the oF-dev mailing list.


Mentors:

If you're interested in being a mentor, add your name here. If there is a specific project you'd like to mentor, add the project in the ideas section. Otherwise, list any general areas of projects you'd be interested in mentoring.

  • Christopher Baker (openLab, SAIC)
  • Zach Lieberman
  • Patricio Gonzales Vivo
  • Theo Watson
  • Dan Wilcox
  • Also: of-dev list at large.


Application questions

  1. Describe your organization.
    • openFrameworks is an open source C++ toolkit designed to assist the creative process by providing a simple and intuitive framework for experimentation. The code is written to be massively cross-compatible. Right now we support five operating systems (Windows, OSX, Linux, iOS, Android) and four IDEs (XCode, Code::Blocks, and Visual Studio and Eclipse). The API is designed to be minimal and easy to grasp. We are a diverse community of hackers, artists, designers, students, teachers from all over the world.
  2. Why is your organization applying to participate in Google Summer of Code 2014? What do you hope to gain by participating?
    • openFrameworks has long been associated with education, but we've never had sponsorship support for the project. Although it's not a teaching tool, per-se, it was designed to make programming in C++ easier for artists, designers and others who don't necessarily have a CS background or degree. We're an active community and would love to have stronger connections to students in the GSOC, and we've been heartened to see how beneficial it's been to Processing and other similar projects.
  3. Has your organization participated in past Google Summer of Codes? (yes/no)
    • no
  4. If you answered “yes” to the question above, please summarize your involvement and the successes and challenges of your participation. Please also list your pass/fail rate for each year.
    • n/a
  5. If your organization has not previously participated in Google Summer of Code, have you applied in the past? If so, for what year(s)?
    • no
  6. What Open Source Initiative approved license(s) does your project use?
  7. What is the URL for your Ideas list? This is the most important part of your proposal. Please make sure we can access it and it is complete when you submit this proposal. “Placeholder” or inaccessible ideas pages will be grounds for an automatic rejection for participation in Google Summer of Code 2014.
  8. What is the main development mailing list for your organization?
  9. What is the main IRC channel for your organization?
    • #openframeworks (freenode)
  10. Who will be your organization administrators?
    • Lauren McCarthy
    • Caitlin Morris
    • Christopher Baker
  11. What criteria did you use to select the mentors? Please be as specific as possible.
    • Mentors are all active contributing members of the of-dev mailing list and openFrameworks community as a whole. The selected mentors have teaching experience in a range of environments. All mentors have expressed a strong interest in contributing time for mentoring and have indicated that they are available throughout the mentoring timeline.
  12. What is your plan for dealing with disappearing students? Please be as specific as possible.
    • Students will not work on their projects in isolation. Ideally, they will already be a part of the OF community and thus have reason to see the project through to a shareable result. They will also be integrated into the smaller of-dev community via the mailing list, IRC, meetups, etc. In addition to focused check-ins with their mentor, they will also share regular progress updates with the of-dev mailing list and receive further discussion and feedback from the group. These relationships will make students feel included and valued as part of the team and prevent them from disappearing. We also intend to work with students with whom the mentors have some prior connection (either from school or some external collaborations), so we can be confident in their accountability prior to beginning.
  13. What is your plan for dealing with disappearing mentors? Please be as specific as possible.
    • All mentors are highly active on the of-dev mailing list, which sees activity on a daily or near-daily basis. In case of a mentor being unresponsive, the organization administrators will reach out to the mentor through email, phone, and/or other networks. Other members of the mailing list have also indicated availability for support if mentors are in need of backup, discussion, or collaboration, or in case of emergency.
  14. What steps will you take to encourage students to interact with your project's community before, during and after the program?
    • As students consider applying and develop their proposals, they are encouraged to join the of-dev mailing list and discuss their ideas and get feedback fleshing them out. Once accepted, they will give regular updates and discuss with mentors, the of-dev mailing list, and post on the OF blog to share with the entire community. At the conclusion, they will deploy their work and it will be shared with the community. Ideally, this might open conversations for future collaborations and contributions. Students could also serve as ambassadors in schools, helping to identify strong applicants for the following summer.
  15. Are you a new organization who has a Googler or other organization to vouch for you? If so, please list their name(s) here.
    • Processing Foundation will vouch
  16. Are you an established or larger organization who would like to vouch for a new organization applying this year? If so, please list their name(s) here.
    • no
  17. What will you do to encourage that your accepted students stick with the project after Google Summer of Code concludes?
    • As mentioned above, students will be fully integrated into the of-dev and larger OF community during the period of their projects. It is our hope that this experience will encourage them to continue participating and contributing, whether this is by continuing to develop the same project or working on some other aspect of OF development and outreach. We also plan to feature the results of their projects very publicly on the OF blog and social media, building support and recognition for their efforts and creative potential.