RailsConf 2016

Saving Sprockets

by Richard Schneeman

In the video titled "Saving Sprockets", Richard Schneeman discusses the critical state of Sprockets, the asset pipeline for Rails, especially following the departure of its main maintainer, who was responsible for approximately 68% of all contributions. With over 51 million downloads, Sprockets is widely used, and its sustainability is paramount to the Rails community.

Key Points Discussed:

  • Background of Sprockets: Developed independently before becoming part of Rails, it handles asset management since Rails 3.1.
  • Maintainer Dynamics: The risk of losing a single maintainer can jeopardize the project's future. Referencing the sudden loss of Jim Wyrick, the creator of Rake, Schneeman emphasizes the need for transition plans.
  • Community Engagement: Maintaining a supportive environment for contributors is essential. Constructive feedback and collaboration can enhance the project's resilience.
  • Documentation and Support: Good documentation can help onboard new contributors and create a welcoming atmosphere. The clarity of guidelines directly impacts engagement.
  • Code Ethics: Maintaining respect among contributors and avoid demonizing creators, especially in critique, fosters a healthier community culture.
  • Sustainable Culture: Establishing collaborative practices ensures that contributors remain engaged, leading to a more robust project maintenance model.

Examples and Illustrations:

  • Schneeman encourages small, incremental contributions (e.g., bug fixes, documentation improvements) to help juniors become confident maintainers and spark community interaction.
  • He discusses the importance of maintaining humility and recognizing that no contributor is irreplaceable, stressing the value of collective contributions.

Conclusions and Takeaways:

  • Respect Contributions: Always acknowledge and appreciate the efforts of maintainers and contributors.
  • Plan Ahead: Ensure that your project has a structure that allows for smooth transitions and sustainable practices to prevent burnout.
  • Engage Continuously: Foster a collaborative culture and focus on actions that support maintainers and the health of the project. Ultimately, Schneeman rallies the audience to take action to save Sprockets by participating meaningfully in the project.

This talk underlines the necessity of community, respect, and planning in sustaining open-source projects, especially when the long-term maintainers might leave at any time.

00:01:17.390 Thank you all for coming. My name is Richard Schneeman, and I'm excited to be here today to talk about why Sprockets needs saving. For those who haven't been around since May of 2011, Sprockets is the premier asset pipeline for Rails 3.1.
00:01:36.720 Sprockets was initially developed independently before it became an integral part of Rails. As a bit of background about myself, people call me various names, and I refer to myself as a 'Ruby hero.' Today, I work for Heroku, and I want to clarify that any likenesses to Disney characters are purely coincidental and intended as parody. I'm joking, of course, but I do hope to evoke some fun in this discussion!
00:02:14.550 From 2011 to 2016, Sprockets has had over 51 million downloads. In comparison, Rails itself has had 65 million downloads, which means Sprockets is also quite popular. Interestingly, a single developer has been responsible for 2027 commits, accounting for about 68% of all contributions. In contrast, another popular project, Rails, has about 5,000 commits made by another key developer, which represents only 0.9% of the project.
00:03:31.910 Imagine the impact if that one developer suddenly walked away. Just like that, Sprockets would be in a precarious position. As a community, we have to ask ourselves: should we abandon Sprockets? Many voices might express discontent and say Sprockets has its issues, but I would urge you to reflect on what those problems actually are. We can't just rewrite something without first understanding what we aim to improve. We still have the same requirements for working with assets, and I believe we are capable of preserving and improving Sprockets!
00:04:47.900 Handling assets with Sprockets has proven manageable so far. There are many nuances involved, but Sprockets comes equipped with a clear and established API. I would like to ask how many of you maintain code or have seen code before.
00:05:35.950 Losing maintainers is inevitable and can be unexpected. For those unfamiliar, one notable case is Jim Wyrick, the creator of Rake, who passed away suddenly in 2014. It was not anticipated, nor was there a transition plan in place, which dealt a heavy blow to the community. The impact of losing a maintainer can take various forms; we might go through denial, anger, or bargaining, struggling to find a way to cope with the loss.
00:06:25.860 One of the first critical rules is that a maintainer does not owe any explanation for their departure. It's a personal decision that can be influenced by many external factors. Conversations I attempted to have with the departing maintainer, Josh, were met with reluctance, which I respect. It's essential to appreciate the effort that has gone into a project, regardless of its current state.
00:07:55.980 Another important rule is to offer maintainers respect. Critiquing software is part of the process, but it should not devolve into demonizing the creator. Critiques should remain constructive, and as I plan on critiquing Sprockets, I aim to be constructive. My focus is on identifying issues and proposing solutions to make it better.
00:08:45.930 When Sprockets came into my hands, I was initially bewildered. It's vital to recognize that maintainers are not their code—or their khakis, for that matter. Josh dedicated significant time to Sprockets, working diligently and resolving many issues.
00:10:29.950 So, moving forward, how do we keep maintainers engaged longer? What is it that maintainer's desire? They want a supportive community ready to assist in both trivial and challenging tasks. While it may seem overwhelming, sustaining maintainers can often be about manageable actions, like providing documentation to help streamline the process.
00:11:39.540 When maintainers feel supported and respected, they are more likely to stick around. Maintaining thorough documentation is essential, as it creates an inviting environment for new contributors who may feel hesitant to engage otherwise. As a developer, you can offer feedback, which can also be productive.
00:12:43.880 If you can spend just five minutes to help, that adds up! Minor contributions matter. For example, if you find bugs, suggest improvements, or contribute to documentation, this helps maintainers while also benefiting the whole project.
00:14:31.960 If you can dedicate ten minutes, consider creating a repro or example application to clarify problems that arise. It can save hours, as clear test cases streamline the troubleshooting process. This encourages maintainers to focus on critical issues.
00:16:05.020 Initially, I wanted to discuss keeping maintainers longer and how to sustain this culture, but I realized the focus needs to involve everyone in the process, including helpers. Creatively fostering a culture of collaboration encourages everyone to pitch in to make the projects better.
00:18:47.620 Moving forward, realism suggests that maintainers, even those who have worked diligently, may eventually depart. Consequently, we need to plan a sustainable culture around these efforts, ensuring satisfied and engaged helpers remain a part of Sprockets.
00:20:40.510 As for documentation, it is essential to craft them with helpful guidance rather than cryptic messages that make understanding difficult. Ultimately, the documentation should meet users' specific needs in a clear and organized way, recognizing different accessibility needs.
00:22:36.400 Catering documents to various skills can strengthen the community. Recognizing that individuals have different needs and experiences allows the Sprockets community to be more accessible to all users.
00:23:56.169 Along with documentation, we must strive to improve code readability and structure to facilitate contributions. Maintainable code attracts helpers—clear organization and effective architecture help newcomers understand the project.
00:25:07.609 Contributors want respect and acknowledgment for their efforts. Creating a positive culture starts by appreciating contributions—offering recognition where it's due motivates others to be involved.
00:26:31.780 For those who pick projects that are previously abandoned due to a lack of maintainers, it's essential to find actionable tasks and start the process of rebuilding. Working on a small task, perhaps a bug fix, helps mold new contributors into confident maintainers.
00:27:46.710 Consistently checking in for documentation updates and supporting a culture of acceptance leads to longer-term engagement.
00:28:09.680 It is crucial to embrace a culture of humility, striving for excellence without being overly critical. Critiques should be about improving the project rather than speaking poorly about others. When issues arise, we can reach out constructively.
00:29:41.020 Ultimately, the life cycle of any project requires contributors to remember that no one is irreplaceable. The pieces of our collective history will continue to build upon each other's foundations. We can preserve our legacy by engaging positively and constructively.
00:30:32.640 As maintainers and helpers, each of us has the capacity to contribute meaningfully. It doesn't have to be grand gestures; forming connections with one another is enough to make a significant impact.
00:31:44.650 If you need suggestions for getting started, think back to one line of code or one critique—comprehensive products grow from countless incremental efforts.
00:32:34.280 In summary, it’s vital to ensure that while maintainers may come and go, we respect and appreciate their contributions. Let's save Sprockets together!