Open Academy

The hypothesis Facebook is exploring with Open Academy is that the best way to learn about software engineering is to do software engineering. As simple as that sounds, we have not traditionally done a good job with this in academia. CS departments may provide a project experience as part of the curriculum, but it typically does not map well to a real world software engineering experience. Facebook and the partner universities wants to do better.

To help bridge this gap between school and industry, last spring Facebook teamed up with Jay Borenstein, a computer science professor at Stanford, to launch Open Academy. Open Academy is a program designed to provide a practical, applied software engineering experience as part of a university student’s CS education. The program works closely with key faculty members at top CS universities to launch a course that matches students with active open source projects and mentors and allows them to receive academic credit for their contributions to the open source code base.

How it works

A student team of 3-8 students, potentially spanning multiple universities, is formed

A matching process is run that puts a student team with an open source project

The team and a "mentor" from the open source project are flown to a location for a weekend ramp up hackathon (the location is Facebook headquarters in Menlo Park, CA). The students can work on improving the project in two ways: by knocking out low hanging fruit issues that already exist or by identifying and pursuing new functionality

The students will work on projects for between 8-20 weeks depending upon the schedules of the universities involved Univerisity faculty will be closely involved and consult with the mentor when determining final student grades. Expectations will be set with the students that states the coding contributions they make - the quality and ambition of them - will be the main factor determining their grade

Expectations from mentors

Help the students select project goals and develop plans to achieve them

Set expectations for how you like to communicate with the team

Be responsive to requests from the team during the course

As often as possible, attend weekly, 30 minute remote team meetings (IRC, Hangout or equivalent)

Be prepared to provide the course instructor with a grade recommendation at the end of the course.

Overall time comittment: You are obviously in control of this and it is also proportional to the number of students you decide to have, but not counting the hackathon, 3-5 hours per week is our expectation

Project proposals

1. Improving Ruby Language Support in KDevelop IDE

What is this project about?

Students will take existing Ruby language support code in KDevelop IDE and improve the language parser, code completion, refactoring, user-visible features, integration with various ruby development tools and much more. There's a lot to do and students will be able to pick things that are most interesting to them, group into teams as they see fit and dig into the most exciting part of any programmer's editor/IDE - the programming language support.

Who is it for?

This project is ideal for students interested in systems programming, compilers and interpreters. If your university compilers class left you wanting to write your own language implementation, this is your chance to get more real world experience in the area.

Prerequisites

KDevelop language support is written in C++, so you should already know it. At least slight familiarity with Qt will definitely be helpful. KDE and Ruby knowledge is not required at all. At the end of this project you'll become Ruby and KDE expert anyways.

Most likely your university has automata/compilers/languages class and it is mandatory that you either complete it or be at the end of it before you start on this project. It will simply be too hard to do this project without understanding how things work behind the scenes.

I'm willing to mentor 3 students working on this project. Maximum 4 people. Due to my other commitments I'll simply have no time for larger groups.

Who will be the mentor?

My name is Alexander Dymo (http://www.alexdymo.com/, https://github.com/adymo). I've been KDE and KDevelop developer since 2002. I'll be glad to introduce you into the exciting world of open source development. Also for 10 years I worked as university professor, so that might help us to make this project an academic success as well.

At this time I'm located in Chicago, US.

How this will work?

We'll use some project management tool (like Acunote that I've developed) to keep track of project goals and progress. We'll make detailed plans every week and have an IRC meeting each Friday to discuss the results.

2. Porting and Packaging KDE software on Mac OS X

What is this project about?

Students will port, patch and package to make sure KDE applications run perfectly on Mac OS X. The most curious students will work on porting KDE Frameworks 5 to Mac.

Who is it for?

This project is ideal for students interested in software porting, packaging and distribution. It is a good chance to take the large software suite, understand how it's organized and built. Unlike other projects, this one is good for dedicated people that like to make perfectly usable software and can dig deeply to understand the core reason why things might not work.

Prerequisites

You should be using Mac as your primary operating system and be at least familiar with C++.

I'm willing to mentor 3 students working on this project. Maximum 4 people. Due to my other commitments I'll simply have no time for larger groups.

Who will be the mentor?

My name is Alexander Dymo (http://www.alexdymo.com/, https://github.com/adymo). I've been KDE and KDevelop developer since 2002. I'll be glad to introduce you into the exciting world of open source development. Also for 10 years I worked as university professor, so that might help us to make this project an academic success as well.

At this time I'm located in Chicago, US.

How this will work?

We'll use some project management tool (like Acunote that I've developed) to keep track of project goals and progress. We'll make detailed plans every week and have an IRC meeting each Friday to discuss the results.

3. Natural language dialog manager

What is this project about?

In this project, students will build on the foundation of Simon's dialog plugin to build a natural language, conversational dialog manager.

Who is it for?

Students that are interested in natural language parsing will feel right at home in this project, but such a background is not required to get involved.
Any team working on this project can influence the specific direction they want to take as there is obviously vast ground to cover (natural language understanding, conversation planning, etc.). Therefore, this project is especially well suited for students that are genuinely interested in the subject matter at hand and eager to explore their area of interest.

Depending on the exact scope, this project should involve between 3 and 4 students.

Prerequisites

Familiarity with C++ and Qt4 is required. While previous experience with KDE application development is not absolutely required, students will be expected to review beginner documentation before the project starts.

All development must happen on Linux as this is the only platform I will be able to support.

Who will be the mentor?

My name is Peter Grasch (http://grasch.net). I am a co-founder and the maintainer of the Simon speech recognition solution that will lay the foundation for this project. I've been working on Simon and open source speech recognition in general for close to 7 years now.

Through Google Summer of Code, where I mentored 4 students working on Simon over the course of two years, I was also already have experience mentoring students.

Starting at the end of January 2014, I will be located in Austria.

How this will work?

A project plan, detailing the weekly goals is expected to be developed by the students (with feedback from the mentor, of course).

In the beginning we will start of with short, daily progress assessments. This can be a 2 minute call or a 5 minute IRC meeting - longer if necessary. If progress is apparent, we can then slowly stretch these reports out to larger, weekly updates.

4. Improving social integration in KDE Workspaces

What is this project about?

There is an existing infrastructure in Akonadi for social media things, we just have nothing using it and nothing putting the data in it. This project would be about making use of that infrastructure and basically bringing the social media to the desktop. That consists of improving the Facebook resource (fixing couple bugs), finishing the Twitter resource (needs Twitter API revision, adding missing functionality - at least notifications and searching), creating one for Identi.ca (based on pump.io - at least getting and posting content and notifications), exploring the possibilities of G+ resource (if and what API is available) and finally finishing the user interface for the content consumption.

Who is it for?

Ideally for heavy social networks users, who know what social media aggregators and social sharing is all about. No point doing this if you're not on Facebook and/or Twitter.

Prerequisites

C++/Qt4 and QML2 and at least basic knowledge of how to build stuff in Linux. Oh and git, please.

One option for the GUI is integration with Choqok (it's based on Qt plugins), on that road QML is not really needed, but its usecase should still be considered when creating things.

Who will be the mentor?

Martin Klapetek <mklapetek@kde.org>, currently living in Czech republic (GMT+1)

How this will work?

Regular online meetings + project tracking through appropriate tools, like Trello. Discussions should be held on the KDE PIM mailing list and of course private emails if needed.

5. Simon's AT-SPI integration

What is this project about?

The speech recognition system Simon is currently based around the concept of being individually configured for each application that is going to be voice controlled. While this works fine for smaller installations it gets tedious in the many cases where no special configuration is needed and the user "just" wants to browse application menus, select buttons, etc.

The protocol AT-SPI (version 2) exports information about control elements of applications on the DBus interface at a toolkit level (no effort needed from application developers). This system is already used for screen readers like Orca.

Simon should be able to parse this information of running programs, generate the necessary vocabulary, grammar and commands to trigger any on-screen buttons, menus, etc. This gives Simon control of running Qt and GTK applications without any specific configuration. Work on this has already begun last year and resulted in a working prototype: http://www.youtube.com/watch?v=mjVc8bKRdqA

This project would be to extend the given prototype to a fully functional system.

As AT-SPI 2 (and especially the Qt bridge for it) is very new, this also involves working together with the developers of that technology as well as collaborating with developers of Qt and GTK to ensure full functionality across a wide array of applications.

Who is it for?

Because the involved technologies are quite new, this project is especially well suited for people that don't shy away from collaboration with other teams working on lower parts of the stack.
As most of the API that will be used for this project is not yet exploited by any mature application, finding bugs or missing functionality will be a common occurrence. Part of the students responsibility will therefore be to work with diverse teams (Qt, GTK, etc.) to troubleshoot foreign code bases in order to provide high quality problem reports and / or even patches where needed.

This project should involve 3 students.

Prerequisites

Familiarity with C++, Qt4 and some communication skills are required.
While previous experience with KDE application development is not absolutely essential, students will be expected to review beginner documentation before the project starts.

All development must happen on Linux.

Who will be the mentor?

My name is Peter Grasch (http://grasch.net). I am a co-founder and the maintainer of the Simon speech recognition solution that will lay the foundation for this project. I've been working on Simon and open source speech recognition in general for close to 7 years now.

Through Google Summer of Code, where I mentored 4 students working on Simon over the course of two years, I was also already have experience mentoring students.

Starting at the end of January 2014, I will be located in Austria.

How this will work?

A project plan, detailing the weekly goals is expected to be developed by the students (with feedback from the mentor, of course).

In the beginning we will start of with short, daily progress assessments. This can be a 2 minute call or a 5 minute IRC meeting - longer if necessary. If progress is apparent, we can then slowly stretch these reports out to larger, weekly updates.

6. Get rid of KDE4Support dependencies in Plasma2

What is this project about?

To Ease the porting from the KDE4 platform to KDE Frameworks 5, the kde4support library has been done as a transitional help, containing all the classes that used to be part of kdelibs but now deprecated. The Plasma framework has been ported to use the other frameworks but a lot of use of the kde4support library remain.
This project is about reviewing all the C++ code present in the plasma-framework Git repository and port it away from any kde4support dependencies.
After the work, libplasma is expected to compile, link and work without linking to this library. The student will have to simplify or even eventually reimplement internally the features of kde4support we can't use anymore.

Who is it for?

One student, some knowledge of C++/CMake is required, the student is expected to build himself the whole frameworks5 development environment (see Frameworks/Building/Details).

Prerequisites

Familiarity with C++, Qt5 and some communication skills are required.
While previous experience with KDE application development is not absolutely essential, students will be expected to review beginner documentation before the project starts.

All development must happen on Linux.

Who will be the mentor?

Marco Martin/Sebastian Kuegler/TBD

How this will work?

A project plan, detailing the weekly goals is expected to be developed by the students (with feedback from the mentor, of course).

In the beginning we will start of with short assignments, checking the progress along the way. Towards the end the student is expected to have a bigger degree of autonomy.

7. Refine and port the API of Plasma QML bindings

What is this project about?

Plasma2 provides a set of QML2 bindings to C++ classes. In some days there will be an API review that will change names, methods and inner working of some of them. The student should participate in it and port all plasmoids that are using those classes/methods to the new API. The steps needs to be documented for a "plasmoid porting guide".

Who is it for?

One student, some knowledge of C++/CMake is required, the student is expected to build himself the whole frameworks5 development environment (see Frameworks/Building/Details).

Prerequisites

Familiarity with C++, Qt5. Some communication skills are required, since the work is to be done together the rest of the community and every step is to be documented on the Wiki.
While previous experience with KDE application development is not absolutely essential, students will be expected to review beginner documentation before the project starts.

All development must happen on Linux.

Who will be the mentor?

Marco Martin/Sebastian Kuegler/TBD

How this will work?

A project plan, detailing the weekly goals is expected to be developed by the students (with feedback from the mentor, of course).

In the beginning we will start of with short assignments, checking the progress along the way. Towards the end the student is expected to have a bigger degree of autonomy.

8. Supporting Javascript in Okular PDF viewer

What is this project about?

Students will take the existing Okular/Poppler codebases and add support for interactive features via JavaScript as defined by the PDF specification. At the moment the code is just able to see the JavaScript but not interpret it so the project would mean adding a JavaScript interpreter to Okular/Poppler and hooking up everything so things like automated form field calculation, etc. works.

Who is it for?

This project is ideal for students interested in C++/JavaScript interaction and user facing software like PDF viewers.

Prerequisites

C++ and JavaScript knowledge is a must. At least slight familiarity with Qt will definitely be helpful.

This is no small undertaking, i think a group of around 3 or 4 people is a minimum for this task.

Who will be the mentor?

My name is Albert Astals Cid and I am the maintainer of Okular (KDE's document viewer) and poppler (PDF rendering library). I've been KDE developer since 2003.

At this time I'm located in Barcelona, Spain

How this will work?

We'll use standard open source coordination tools, that is, git, irc, mailing list. We'll make plans every week and have an IRC meeting each week to discuss the results.