Refactoring
Maintaining a large OSS project: war stories

Summarized using AI

Maintaining a large OSS project: war stories

Ryan Bigg • March 07, 2013 • Earth

In Ryan Bigg's talk at Ruby on Ales 2013, he shares his experiences as a maintainer of Spree Commerce, a leading open-source e-commerce platform. Bigg emphasizes the importance of user happiness in open-source project management and recounts various insightful anecdotes to illustrate this theme. He begins by humorously acknowledging the audience's likely state and his desire to enjoy a drink during his talk.

Key points discussed include:

- User Engagement: Bigg's passion stems from positive feedback he receives from users, which motivates him to enhance the platform.

- Spree User Activity Trends: He presents a graph showing user posts from 2010 to 2013, revealing seasonal fluctuations in activity and a notable spike in 2013, indicating growing popularity.

- Issue Management: Bigg shares a learning experience with user issues, discussing how addressing user frustration promptly can prevent negativity from spreading.

- System Improvements: He discusses significant architectural changes, such as refactoring the authentication system and enhancing the JSON API, improving usability and customization for users.

- Documentation and Contributions: Emphasizing the need for good documentation, Bigg notes that it fosters community engagement and assists new contributors in joining the project effectively.

- Continuous Integration: Implementing TeamCity for continuous integration has increased stability and user confidence in the platform.

In conclusion, Bigg's experiences underline the significance of prioritizing user happiness and maintaining effective communication within the open-source community. He highlights that successful management in open-source projects not only relies on technical improvements but also on the community's sentiment and interactions. His talk encourages open source contributors to focus on creating positive user experiences as the foundation for project success.

Maintaining a large OSS project: war stories
Ryan Bigg • March 07, 2013 • Earth

At the end of 2011, I switched from being a Ruby consultant to being one of the lead maintainers of the biggest OSS Ruby projects. Best part is: I get paid to do it.

During that time, I've learned an awful lot about what it means to be responsible for something as massive as this project. Refactoring the code without causing tears for loyal users has been an extremely interesting problem to have.

I have some rather interesting stories to tell, like the time I renamed most of the files deliberately on purpose, or that time I ripped out a component that people depended on, and everyone was still happy. There's even been times where code has been moved out of the models and into new classes, which seems to be the cool thing to do.

Help us caption & translate this video!

http://amara.org/v/FGbA/

Ruby on Ales 2013

00:00:20.480 Okay, good afternoon! I know you're probably feeling a bit drunk and a bit tired at this time, and that's okay. Speaking of drinks, I forgot to bring one for myself, so if I could get a hard cider, that would be really awesome. By the end of this talk, I should be more drunk than I am now!
00:00:49.120 All right, so today I'll be talking about open source war stories in the context of Spree Commerce. I'm a maintainer of Spree Commerce, one of the main e-commerce platforms, and I deal with all the user issues, the posts, all the GitHub posts, and whatnot. Open source war stories might seem like I'm battling against the users, like it's Allies versus Axis, but that's not actually the case. My goal is not to win the war; it's to make people happy through the open source work that I do.
00:01:08.720 I want them to be happy when they use Spree. I want to see them happy when they use forms. How happy do I want them to be? Well, I want them to be as happy as a kid who got a Nintendo 64 for Christmas. This kid screamed with joy, and I want to see that same happiness in users who hold Spree in their hands.
00:01:24.320 When I see posts or emails coming through my email client on my iPhone, and I see comments like, 'Wow, this is great! Thank you so much!', this fuels my passion for continuing to work on this open source project. Now, I'm going to share a graph because everyone loves graphs. Here is a graph of all the posts in the Spree user community from January 2010 to January 2013.
00:01:57.760 What you'll notice from this graph is the trend line. It might be a bit hard to see, but the trend line is actually going slightly downward. You would expect that if Spree was getting more popular, the trend line would be going upwards, but that's not the case.
00:02:06.560 You'll also notice a couple of points where the Spree user posts drop off. This is because during the summer months, specifically from July to December, people aren't using Spree. They're focused on their e-commerce platforms, and if they change anything, they risk breaking everything right before Christmas. However, come January, they return with their e-commerce needs, looking for ways to improve, and that's when we start seeing activity again.
00:02:34.840 For instance, in February 2010, 2011, and 2012, we see a pattern in the number of posts. The February posts for 2013, however, showed a significant spike. The previous trend had gone upward, indicating growing interest in Spree. A lot of people have started seeing Spree as a viable option for their e-commerce solutions. This is extraordinary to me because before I started maintaining Spree, there were only 690 open issues on GitHub, but after I took over, we received another 1940 issues created.
00:03:53.680 You can interpret this data in one of two ways. One interpretation is that Spree is getting more popular, and therefore, more users are running into issues. The second interpretation is that I'm just a fancy person who keeps messing things up. Fortunately, we're getting more comments over time, which is a good sign, as it means Spree is becoming increasingly popular.
00:04:17.440 Managing an open source project that is 99.9% positive is quite rewarding, as users generally follow the contributing guidelines. They raise problems constructively, providing detailed information that helps me assist them better. However, there was one issue, numbered 1247, that caught my attention when a user posted about deploying Spree and encountering an undefined method error. After four hours, he closed the issue, stating he found a command that fixed it, which I didn't even have time to look at. When another user later reported the same issue, I was stressed and looking for information. After some back and forth, I ultimately managed to reproduce it and fix it quickly.
00:05:23.680 This experience taught me that if you encounter an angry user who's frustrated about their problems, it's essential to act quickly to calm them down. You want to extinguish their anger as soon as possible to avoid a bigger explosion of negativity. This is the point of my work; I want to make these users happy as fast as I can, because anger can spread quickly if not addressed.
00:06:13.120 I reached out to a company on Twitter to find out more about a user who was posting complaints, and it turned out their account was managed by a contractor. It became apparent that he was likely someone who was paid poorly to maintain a Spree store, which explained his frustration.
00:06:32.639 As it happened, I wasn't able to get through various stories during my talk. Last year, Tyler had posted a piece on why people should not learn Rails, discussing some problems he perceived in the community. I responded to his post, emphasizing that this was not representative of the larger Rails community, as there are many contributors striving to improve it.
00:07:03.920 In revisiting the Spree project, I found some issues around the construction of the platform that needed addressing. One of the changes was in refactoring authentication. Previously, Spree had its concept of users separate from a host application's users. We decided to pull out the authentication component to a separate gem to facilitate this process. Users can now define how their current user should operate within their application without interference from Spree, creating a more customizable experience.
00:08:16.480 Another vital task was improving our JSON API. Before, our JSON responses were often inconsistent—sometimes returning text rather than JSON. To solve this, we started modeling our API responses after the GitHub API, which has excellent documentation. We utilized various tools like the Ransack gem to scope products and Kaminari for pagination.
00:09:17.680 The API structure ultimately enables us to return an account total and pagination alongside the products themselves. This consistency and structure have greatly enhanced user interaction with our API, allowing users to perform actions efficiently. One more significant improvement was focusing on multi-currency support, allowing users to set prices according to their local settings rather than forcing one single currency. This was a huge win for what we are targeting, enhancing the overall usability of Spree.
00:11:00.480 As Spree has grown, we've faced challenges managing the increased complexity. The open source project is continually evolving, and as we receive contributions, we strive for high-quality input. One of the things we've addressed is improving our documentation, especially for contributors. Good documentation fosters engagement and helps those unfamiliar with Spree get on board, enabling them to contribute efficiently.
00:11:35.600 Furthermore, we've implemented a continuous integration system using TeamCity, which allows us to manage builds and maintain confidence that our public-facing projects are stable. Before we adopted TeamCity, issues with broken builds could circulate widely, causing user frustration. Now, when a push is made, TeamCity verifies that everything is green before distributing updates.
00:12:10.480 By improving our workflow and adopting better practices, we're not only able to scale our efforts but also to manage user feedback more effectively. Our open-source community thrives because it centers around happy users and contributors who feel empowered to improve the platform.
00:12:26.640 Overall, my experiences managing the Spree project have taught me the value of user happiness and engagement in the open-source community. As we continue to evolve, both in contribution levels and the complexity of the project, we aim to ensure our users and contributors feel valued and supported.
00:12:54.640 Thank you for your time, and if you have any questions at all, I'd be happy to answer them!
Explore all talks recorded at Ruby on Ales 2013
+12