Arran France's Report
The Royal Holloway Travel Award generously funded part of five weeks of travel to Phoenix in America during September of 2016 to allow me to invest time in collaborating on Rock RMS, an open source tool for churches and non-profits to allow them to manage relationships with their persons of interest at scale. The goal of the visit was to learn more about the nature and management of open source software and to improve my knowledge of software architecture and engineering which are foundational concepts of my degree. I had also been invited to speak at the Rock conference that was being held in LA towards the end of the trip.
Day to day, I was based mainly in the Spark International Headquarters in Arrowhead, Phoenix from 9 to 5 with the core development team and took part in the weekly developer meeting. But I was also occasionally based at Central Christian Church Arizona who are also deeply involved with the ongoing development of Rock.
Over the course of the five weeks I was involved in every stage of the software development life cycle, giving me a good overview of the software development process. My first week was spent performing tests, allowing me to put into practice some of the skills taught to me by my Software Development module. Version six of Rock was undergoing its finishing touches when I arrived and my first task was to test an unannounced feature which allows users a framework to perform tasks that previously would have required custom development, such as finding users in the database based on certain parameters, the ability to embed C# code, and use SQL directly. Given the potential security concerns of such access, I spent a lot of time investing tests based of possible exploits, such as embedding code in form entry and attempting to remotely execute code at API endpoints. I also spent a large portion of my time reproducing, identifying the source of, and fixing bugs that had been reported by users and implementing micro-features.
The largest project I worked on in my time in Phoenix was a new notification feature. This project required me to help specify the design of the feature as well as implement it. The 'SparkLink' allows the Spark Development Network to communicate with user's installations via a Content Channel. A job on a Rock installation polls an API endpoint to check for notifications, providing its current version and the endpoint responds with all content channel items that match that particular version of Rock. It also checks the list of plugins that the client provides to see if there are updates. The client then stores the notifications in its database and presents said notifications to a secured administrator group on the home page.
The most rewarding part of my trip was the time spent discussing and observing how an open source project functions. I noticed that, with the Rock RMS project, there are a number of tensions at play: tensions between the amount of donations received and the time invested, tensions between providing all the features an organisation might need and designing a simple and effective system, and tensions between wanting the community to provide more development but also ensuring that the quality of development is at a high standard.
During my time I was able to contribute to some of the ongoing discussions around these tensions. I implemented a new labelling system to help identify reported issues better, a new standard template for contributions and reporting issues to speed up resolution and contribution review, as well as a new tool to enable collaboration between non-core developers and ecosystem developers.
Overall I feel like my trip vastly increased my ability to work as part of a team and taught me about some of the difficulties working on an open source project as part of a network of developers.