Bart Massey
Google Summer of Code is a unique program. One of its most interesting features is that Google seems relatively agnostic about program goals. The fantastic people at the Open Source Program Office admit to wanting to:
Help students find technically meaningful paid summer work.
Support the open source ecosystem by supplying skilled labor for to the open source Mentoring Organizations.
Other than that, things are pretty open, which gives a lot of flexibility to those participating in the program.
Portland State, in our eleventh year with GSoC, is a relatively unique Org. Portland State is obviously not an open source project; neither are we focused on a particular kind of software or service. Instead, we concentrate on two attributes of projects: individual focus and academic relevance. Portland State serves as a home for GSoC projects that might otherwise not find an Org within GSoC, either because they require especially theory-based or academic mentoring or because there is no GSoC Org that fits. Even more than most Orgs, we insist that Students do a self-contained piece of technical work: many of our projects are "from scratch".
Another unique aspect of Portland State GSoC is our local mentoring focus. While our Students come from all over the world, most of our Mentors are drawn from the Portland, Oregon area. (The principal exception is for professors and project leaders that are "natural mentors" for a particular project.) This geographic proximity, possible only because of the huge diversity of open source talent in the region, gives us the opportunity to work together in some really effective ways.
A new practice this year was to require a brief daily blog post from each Student. This proved to be an excellent way for the Mentors and I to keep track of progress, and got the Students in the useful habit of reporting and reflecting on their work. I tracked all the blogs using RSS, which worked well. While technical difficulties with blogging on our Drupal collaboration site marred the experience a bit, it still worked out fantastically well: we plan to do it again (if accepted) next year. You can read most of the blog posts here.
As with every year of GSoC, the results for Portland State this year are fantastic. We supervised projects covering a wide range of activities. Other than a couple of hiccups before the program even started, all of our students successfully finished their work. Here are descriptions of our projects and their outcomes. Descriptions in italics were written by the student and lightly edited by me.
Student: Alexia Ingerson
Project: Efficient Parallelized Bitmap Compression
Mentor: David Chiu
I implemented a parallelized compression algorithm in C in order to run some CPU and cache analyses. While my Mentor and I originally hypothesized that the decrease in speedup was caused by an increase in cache misses, our analysis showed that it was in fact the I/O that could be significantly improved.
Using these results, we developed a different method of compressing the files using striping based on number of threads and compression block size. The final submitted version compresses the data in core which means it can handle very large anounts of data. However, the real benefit is evident in the out-of-core version that is in the works.
While it was difficult to be so self-reliant and independent for this project, I learned so much from pushing myself like that. I learned to problem solve better on my own and how to properly conduct research: an invaluable skill.
Student: Hisham Benotman
Project: Multiple Diagram Navigation Drupal Module
Mentor: Bart Massey
Multiple Diagram Navigation (MDN) is a Drupal module that allows website authors to incorporate diagrams, maps, infographics, and other visual structures in their sites. The diagrams are supplied in SVG format. Using MDN, website authors can both connect shapes in a diagram to related shapes in other diagrams and to related Drupal nodes. Based on these connections, users can browse the website content using multiple diagrams which provide multiple points of view for the content.
Because of my limited experience in web development and Drupal, developing a Drupal module was a challenge for me, especially in the beginning. As I progressed in the project I felt more comfortable. Participating in GSoC encouraged me to set a plan and have deadlines. Blogging five days a week kept a high rhythm during the whole summer. In the end, I believe I made the right decision to apply for GSoC; I have a complete tool that I do not think I would have if I worked alone. I will do something similar next summer, either by applying to GSoC again or participating in another similar activity. Regarding MDN, there is more to do. My research is about MDN. I plan to enhance the tool and develop new features.
Student: Jon Barnes
Project: Web Application for Geologic Thin Section
Mapping and Mineral Analysis
Mentor: David Percy
For Google Summer of Code 2015 I worked on Python-based code to identify minerals in geologic rock thin sections. The focus of this project was to work on a website to analyze and share data about thin sections between geologists. The first half of this summer focused on building and designing the website, and the second half of this summer focused more on getting the Django code to work for the site.
I learned a lot this summer, felt fulfilled in helping the scientific community, and was glad (as Google puts it) to flip bits and not flip burgers. At times during this project I was frustrated and felt down, but working to solve the challenges made this summer even more fulfilling. Google Summer of Code taught me how to work on a very large project that took a long time. With handling a large project comes the development of useful skills, like knowing how to work on little pieces of the project while still working towards the end goal. This experience has made me a better coder, a better geologist, person, and prepared me for graduate school and the work force.
Student: Josh Leverette
Project: High-Precision Open Source Indoor Tracking System
Mentor: Bart Massey
Josh took on the task of getting a COTS 9-DoF Inertial Measurement Unit, the STM LSM9DS0, working with Linux and implementing sensor fusion with the goal of building a portable embedded system that could track a person through a building. His intended target was emergency First Responders, but the system has a variety of uses.
Josh was quite successful in getting a difficult-to-write device driver working, getting the basics of quaternion-based 3D navigation right, and in implementing a simple Kalman filter. While his final vision wasn't realized in the time period, his work was nonetheless an extremely impressive technical achievement on which he and others can build.
Student: Karthik Sentil
Project: A Tool To Build Definitional Trees
Mentor: Sergio Antoy
Karthik built an open source tool useful in the compilation and execution of Functional Logic Programming languages; this tool is related to research conducted with his Mentor and Ph.D. advisor. The tool was completed successfully and fielded in demonstration projects.
This is one of those projects that is quite important inside a narrow community, and an example of the ability of Portland State GSoC to provide academic mentoring. As someone who has worked on Functional Logic Programming myself (and co-written papers with Sergio) I can attest to the value of this work, even though the general public will probably never see it.
Student: Maxim Grishin
Project: Commercial-Quality Sound In MuseScore
Mentor: Bart Massey
Maxim took on the task of improving MuseScore, a high-quality open source music composition tool that was not part of GSoC this year. In particular, the MIDI and audio generation needed some help, especially after the release of MuseScore 2.0 which made fundamental architectural changes.
Maxim's work comprised a huge number of improvements to MuseScore's MIDI and audio components, as well as fixing a number of outstanding bugs in this area. His productivity was off the charts, and the end result will benefit composers everywhere.
Student: Melissa Fabros
Project: WebLogo: Making Sequence Logos Easy and Painless
Mentor: Bart Massey
A "Sequence Logo" is a graphical representation of RNA, DNA, or protein multiple sequence alignments. Melissa worked to rewrite portions of a web tool, WebLogo, for managing Sequence Logos. She modified WebLogo's front-end to enable the web application’s use on mobile computing devices and to incorporate dynamic web features, modernized the HTML and CSS to meet “Responsive Design” standards, and added substantial capabilities around Sequence Logo upload, download and sharing.
While I was the de jure Mentor in this work, most of the de facto mentoring was done by Dr. Gavin Crooks, who designed and implemented WebLogo. This was a great example of an academic partnership that produced really nice improvements to a scientific tool.
Student: Michael Kennedy
Project: A Mobile Application Privacy Testing Tool
Mentor: Bart Massey
The aim of my GSoC project was to develop a network privacy testing tool for Android applications. This tool detects the disclosure of personal information and specifically two disclosure issues: the "leakage" of personal information through unencrypted network traffic, and inappropriate disclosure of personal information to third-party providers such as advertisers (in encrypted and unencrypted traffic). My motivation for the project is the lack of available privacy testing tools: I also thought it would be a fun project.
I extended the open-source nogotofail application. Nogotofail already had a solid API that assisted with the development of PII detection handlers. Log parsing functionality was added to produce JSON reports showing a consolidated view of privacy issues for applications. The report is very useful in determining personal information leaked by an application to each service (domain). I learned a lot during this project. Developing the handlers required learning about the subtleties of HTTP requests and responses, as well as about TLS connections.
Student: Nalin
Project: XBoard Enhancement and Accessibility
Mentor: Samuel Thibault and H.G. Muller
XBoard is an open source cross-platform C program that is one of the oldest and most-used interfaces to Chess engines. Nalin took on the task of fixing some user interface issues in XBoard with the specific intention of improving accessibility for users with disabilities, under the mentorship of two of the XBoard authors.
The result of Nalin's work is a marked improvement to the XBoard interface. While it was a learning experience for him in terms of working with the coding conventions and correctness issues in a large legacy C project, his successful completion was both beneficial to his education and a great contribution to the open source community.
Student: Tim Cooper
Project: Adding gRPC support To The Mumble VoIP server
Mentor: Greg Haynes
For the past three months, I have been working on the server-side code of the Mumble project, an open-source VoIP system that is primarily used in the online gaming community. I added support for Google's new gRPC library: a library that allows developers to remotely invoke functions on a server. My changes allow Mumble server owners to write code in several different languages to interact with and change how their Mumble servers operate.
Working with Portland State University this past summer was very enjoyable. Having PSU let us, the students, come up with our own projects was a great aspect of working with them. I believe that working on a project I had a keen interest in led to a successful and productive summer.
Student: Vaibhav Sharma
Project: Face Detection and Recognition In Videos
Mentor: Bart Massey
Vaibhav took on the extraordinarily difficult task of recognizing actors' faces in videos using machine learning. Building the infrastructure alone was a major effort, and there were countless challenges in algorithms and techniques. One major hurdle was building a good corpus for training and evaluation.
In the end, while Vaibhav's detection recognition accuracy was not ideal, the work provided a strong foundation for future open source work. In addition, Vaibhav learned a great deal about both software development and the research that underlies it when working on the frontiers of computer capability.
This was one of the best years ever for Portland State GSoC. I was really impressed with the students and with the work that they produced. I learned some valuable lessons that will be applied to the program if we are accepted next year, and as always really enjoyed the process.
Thanks again to the Google Summer of Code team. Chris, Cat, Carol and the rest of the crew have done amazing things to create and maintain this special program. Thanks also to Google for its generosity and funding. Thanks to my backup Org Admin, Percy, for his continued help and support. Finally, thanks huge to the Mentors and Students who literally made it possible for Google / Portland State Summer of Code 2015 to happen. My gratitude is deep and sincere: it has been an honor to work with you.