This page contains information specific to GNOME's participation in Outreachy internships from May 23 to August 23, 2016.
Five interns did internships with GNOME during this round. One internship was sponsored by the GNOME Foundation, and four internships were sponsored from Outreachy's general funding provided by Bloomberg, DigitalOcean, GitHub, Google, Hewlett Packard Enterprise, Intel, O'Reilly, and OpenStack Foundation.
1. Project Ideas
Applicants, GNOME's page for the program explains how you can choose a project. Please see the confirmed ideas below.
Mentors, first it's very important that your read GNOME's information for mentors and Outreachy's information for mentors. Both provide important information about expectations and best practices.
Add your project ideas and a link to your contact information here. Because we only usually have a few participants in Outreachy with GNOME, we are limiting the available projects to the ones that are most strategic for GNOME. These include, but are not limited to, projects in the area of privacy, developer experience, GTK+, core experience, core applications, and web infrastructure. We would also like people to think ahead of time how they will be able to provide excellent mentorship to the interns before, during, and after the internship, and whether there is a larger project team the intern will be able to receive support from.
The cross-team triage committee for proposed project ideas consists of Matthias Clasen, Allan Day, and Sriram Ramkrishna.
Please add your idea to the Unconfirmed Ideas section below using the following format:
. '''Idea title''' (mentor: MentorName linking to you live.gnome.org personal info page) * ''Benefits'': describe the benefits of your idea * ''Importance'': why is this idea strategic for GNOME? * ''Requirements'': what should the applicant know already? * ''Mentorship'': what is your experience for mentoring this project and what communication channels and frequency will you use to communicate with the mentee? * ''Project team'': what is the project team like? * Note: one or multiple notes, links, whatever further information ----
As explained in the section on redirecting on the Outreachy information for mentors page, please feel free to add [No longer taking applicants] next to your project idea if you have as many applicants as you can work with during the application process or have a strong applicant you will likely want to accept.
1.1. Confirmed Ideas
Engagement: visual and graphic design (mentor: AllanDay)
Benefits: visual and graphic design are an important part of marketing and public awareness. The Engagement Team has a large number of visual and graphic design tasks that it needs assistance with, including: annual report design, letter templates, and leaflets, badges and postcards for Friends of GNOME.
Requirements: visual and graphic design experience, capacity to work with free/open graphic design tools (Inkscape, Scribus), ability to closely work with the Engagement and Design teams.
Mentorship: email and video chat can be used for direct communication. IRC and the Engagement Team mailing list are preferred where possible.
Project Team: the intern should liase with existing graphic designers in the project, particularly AndreasNilsson and JakubSteiner. They will also need to work with members of the Engagement Team on ongoing initiatives, such as Friends of GNOME and the Annual Report.
Usability testing (mentor: JimHall)
Benefits: Usability is important in any user interface. Usability focuses on the user and how they expect to use the software. The general rule about usability is that real people use programs to be productive, and they are busy people who are trying to get things done. GNOME needs to be easy to use if we expect others to want to use it.
Importance: Through usability testing, we can make sure everyone can use GNOME.
Requirements: Pretty flexible. It will help if you have some experience with user interfaces, even some coursework in this topic.
Mentorship: I have been very involved in the usability of open source software since I made it the focus for my Master's degree in 2014. I have mentored two cycles of Usability testing in GNOME, and taught an online class on the usability of open source software (CSCI 4609 Processes, Programming, and Languages: Usability of Open Source Software). I also write occasional articles in Linux Journal and other places about usability in open source software.
Project team: The project team will be you and me, and will also work closely with the Design team. I find it works best if we follow a course-like outline: every week, I'll ask you to do some research and write about it on your blog. Over the course of the internship, you'll work your way up to a formal usability test of GNOME, and conclude with analysis and recommendations.
Note: You can learn more about usability testing methods by following my blog at Open Source Software and Usability. You can also search my blog for previous usability testing in GNOME, to get an idea for the work expected.
LibRsvg: Add fuzz-testing framework (mentor: FedericoMenaQuintero)
Benefits: Librsvg takes SVG files and renders them into bitmaps. GNOME uses librsvg in various places, and external projects like Wikimedia use it to render their own SVGs, too. Fuzz testing has helped uncover important bugs in librsvg, but unfortunately fuzzing is not baked into librsvg's build environment. Having a way to run "make fuzz" or something like that would make it easier to find bugs.
Requirements: Basic knowledge of Automake. Knowledge in fuzz testing frameworks, especially afl-fuzz.
- Note: it is not necessary to use afl-fuzz, although the maintainer would like to see it used, as it is well-supported and has ongoing development.
Mentorship: We'll talk over email and IRC/IM. We can VOIP over Signal/Ekiga. This would be my first time mentoring for librsvg, as I only took over maintainership this year. I've mentored for GSOC and Outreachy in the past several times.
Project team: This is a solo show! With you it would be a duet!
Music: ownCloud source support (mentor: FelipeBorges co-mentor: VictorToso)
Benefits: Making gnome-music able to play songs from ownCloud.
Requirements: knowledge of Python and C, ideally together with the gtk+ library.
Mentorship: Every working hour on IRC, bugzilla, and email.
Project Team: GNOME Music and Grilo developers.
Note: for more details about the feature, see previous discussions at https://bugzilla.gnome.org/show_bug.cgi?id=708937
Music: audio tag edition support (mentors: FelipeBorges, CarlosGarnacho)
Benefits: Making gnome-music more than a read-only view of your music collection.
Requirements: knowledge of Python, ideally together with the gtk+ library. Basic knowledge of Sparql (more especifically the UPDATE syntax) is a plus.
Mentorship: Every working hour on IRC, bugzilla, and email.
Project Team: GNOME Music and Tracker developers.
- Note: tag writing is meant to be performed using Tracker's tracker-writeback daemon, the UI will be solely responsible of performing the Sparql updates modifying the data.
Maps and libchamplain: Make the map wrap horizontally in the libchamplain map widget (mentors: JonasDanielsson and JiříTechet)
Benefits: Wrapping of the map is a pretty standard feature that we lack. The benefit would be a smoother map panning experience and not having the whole of Taveuni island (geo:-16.825323,-179.936756;crs=wgs84;u=0) rendered.
Requirements: Proficiency in C and an interest for geo stuff.
Mentorship: IRC will be used for communication. But day jobs and families makes asynch communication of importance. Bugzilla and mail convos will be had.
Project Team: We have an active helpful community in #gnome-maps!
- Note: There might be room and time to find other areas of improvement in the libchamplain Map widget.
Bug: here
Photos: Upload to Google Photos (mentor: DebarshiRay)
Benefits: Sharing is critical for Photos. The inablity to upload content is one of the bigger missing pieces, and this will be a big step forward in that direction.
Requirements: C, GData, GLib, GTK+
Mentorship: I have been maintainer of GNOME Photos since it was started in 2012. I am usually on IRC during working hours in Central European Time. I might, on occasion, be there at other times too. I am happy to answer questions and review your patches.
Project team: Other than me, there are approximately 3 regular contributors. You can find them in the IRC channel and they would be happy to help you out in my absence.
Note: You should get yourself a Google account. See bug #751181 for UX mockups.
Builder: Add history and scripting engine to command bar (mentors: ChristianHergert)
Benefits: Builder has a vim-like command bar to execute tasks. We would like to see it extended to include visual history of commands that return results (such as hex(10) => "0xa"). This will use the internal language embedded in Builder which is implemented in C (and part of template-glib).
Requirements: Candidate should be proficient in C, and know or interested in learning GObject. Experience with GObject Introspection or language bindings is a plus.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
- Note: An experienced student may opt to take this further and implement auto-completion for the embedded scripting language.
Builder: Implement spell check, search, and replace (mentors: ChristianHergert)
Benefits: Currently builder lacks a simplified search and replace feature. Much of the design can be shared with Gedit. Additionally, since this has such overlap with spell-check, we would like the candidate to implement spell check as well. This too can large be inherited from Gedit.
Requirements: Proficiency in C and a desire to learn GObject and Gtk.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
Note: Much of the search and replace algorithms have been implemented and are available as part of GtkSourceView. This project involves as much UX as it does C.
Builder: Implement worker-process recycling (mentors: ChristianHergert)
Benefits: Browsers have shown the value of moving intensive work out of process. Builder does this too. However, Builder currently lacks the ability to restrict memory and cpu of those worker processes. The candidate will implement basic containment for Linux (using cgroups) and tweak libIDE to support restarting crashed or miss-behaving worker processes. To prove the implementation, the candidate will port the clang and vala plugins to run out of process.
Mentorship: IRC will be used for communication. When Christian is not available, you will likely find encouragement and support from other community members on IRC. There are about 5 regular contributors to Builder and associated projects.
Requirements: Proficiency in C. Willingness to study in detail the containment APIs available to us on Linux. Familiarity with D-Bus.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
Builder: Implement code-snippet editor (mentors: ChristianHergert)
Benefits: Builder has a robust snippet engine, but currently lacks the ability to edit those snippets from the code editor. The candidate will write a plugin for Builder that allows editing snippets and saving the modified snippets back to the users home directory.
Requirements: Experience with Gtk. Profficiency in either C, Vala, or Python.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
- Note: Builder has support for writing snippet files back to disk. This is largely a process of plumbing various sub-systems together.
Builder: Integrate GNOME Terminal features into Builder (mentors: ChristianHergert)
Benefits: Builder currently has a very simple terminal embedded. We would like more of GNOME terminals features integrated into Builder including 1) Search through command line output 2) Color palette selection 3) Use exiting profile from GNOME Terminal.
Requirements: Proficiency in C. Experience with Gtk and GSettings.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
- Note: This will require reading a lot of code from GNOME Terminal.
Builder: Implement full-screen distraction-free mode (mentors: ChristianHergert)
Benefits: Builder's earliest designs had the concept of a "distraction free" full-screen mode. This has already been implemented in Gedit, which can serve as inspiration on how to implement this feature. Ensuring that plugins can extend the full-screen mode will also be part of this project.
Requirements: Proficiency in C and experience with Gtk.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
Builder: Implement custom project commands (mentors: ChristianHergert)
Benefits: Many editors and IDEs support running custom commands for a project. This project will involve adding a "Custom Command" extension to the project configuration UI which stores them in the .buildconfig files. Additionally, the users should be able to execute these commands with either a keyboard shortcut, or from the command-bar. Output of the command should be displayed to the user in an "output panel".
Requirements: Proficiency in C. Some experience with Gtk will be useful.
- Note: You will be adding API to libIDE to support custom commands which will need to integrate with custom runtimes such as Jhbuild and Xdg-App.
Mentorship: IRC will be used for communication. Typically, Christian is available on a daily basis and responsive via IRC.
Project Team: There are about 5 regular code contributors to Builder and associated projects. We coordinate primarily via IRC and would expect new contributors to be available here.
Improve Spanish translations and create a guideline (mentor: DanielMustieles)
Benefits: complete Spanish translations for core modules and have a guideline to unify some criteria for translations (glossary, common terms, etc). Gain privileges into the translation team (prrofreader, commit-access...).
Importance: Spanish team is the most active translation team and places the basis for other latin american teams, which can reuse Spanish translations to start or improve their own teams
Requirements: have a perfect knowledge of Spanish grammar and a technical background is a must to be a translator. English knowledge is, of course, neccessary.
Mentorship style: I'm the coordinator of the team and will follow closely the applicant to help her in whatever she needs during the internship. I will review translations, help with difficulties and will offer ideas to the guidelines based on our current needs.