Coding the open seas
All SilverStripe developers started out in the same place. We were explorers — outsiders looking in on the unknown. With meager skills and only our curiosity and passion for discovery filling our sails, we navigated uncharted waters, leaning on whatever documentation we could find, and engaging helpful members of the community who had once upon a time been in our position. When things got especially challenging, we may have waded through thousands of lines of source code, desperately seeking an answer, but happy to find just a clue.
Some of us are further along in that journey than others, but unless your name is Sam Minnée, Sigurd Magnusson, or Tim Copeland, SilverStripe and its idiosyncratic patterns were not magically imbued in your soul. You had to work to reach the understanding you have today. Such is the nature of open-source software — as fluency spreads, velocity increases. The product marches forward, but looking backward and leaving a trail of breadcrumbs for the next wave of newcomers is rarely done and scantly incentivised.
Don't drop the n00bs.
We don't have any solid metrics on how many developers abandon ship on their journey through the SilverStripe seas due to a perceived deficit in support, and even if we did, the numbers would be squishy at best. We can, however, deduct a lot from the empirical evidence that surrounds us. With little variance, open-source products that enjoy high adoption rates and a large volume of contributors also enjoy rich, extensive, and accessible educational resources. The cause-and-effect of that correlation is up for debate, but it is clear that if we want to grow SilverStripe, improving the documentation and lowering the barriers to entry cannot be ignored.
So where does SilverStripe stand on the continuum of "exclusive club" to "vibrant, inviting community?" We're much further along than we were, but not nearly as far as we want to be. That's where I come in.
For years I wanted to develop a proper educational resource for SilverStripe. My blog, LeftAndMain, had plans to become a much more robust resource full of experience-driven learning materials for SilverStripe, but progress waned, and I often felt like it would be a second job just to keep it fresh and relevant. Fortunately, it wouldn't have to become my second job, because this past May, it became my primary job, when SilverStripe on-boarded me as a Community Educator.
In my new role, I oversee the growth, improvement, and dissemination of educational resources for SilverStripe. This could be as simple as updating the core documentation or as complex as developing a full-featured online university for SilverStripe. Everything is on the table at this point, and for better or worse, I tend to think really big. I really want people to learn SilverStripe with ease, and enjoy it every step of the way.
There are some tangible updates that have unfolded over the last few months. The documentation site has benefitted from the hard work of community member Will Rossiter and now proudly showcases a new look-and-feel and informational architecture on its beta site. We are actively soliciting the community for feedback, and hope to launch the new documentation site by the end of the year.
So what's next?
I'm a big fan of experiential learning, and I see it as an area where SilverStripe is lacking. While standalone documentation alone is sufficient for those already proficient in the framework, new members of the community are better served by documentation that is surrounded by context, and promotes the "why" over the "how." Documentation needs to be relatable, and if new learners can make a connection between example code and a real-life project, the education takes on a much more palpable and digestible form.
To that end, we plan to roll out a rich library of tutorials, or "lessons" that teach core SilverStripe principles in the context of a real project. An imaginary client will submit feature requests, and we'll work through the process of breaking down needs into actionable tasks. We'll then demonstrate how to best complete those tasks with SilverStripe. The application we build through the tutorials will be a fully functional analog of public-facing site, and available on a public code repository, with each lesson tagged as a commit, allowing learners to time travel through the progression of the lessons.
Eventually, I would love to see lessons taxonomised into "courses" and further reinforced with some kind of interactive demonstration of acquired skill, such as a quiz or code sandbox.
Most importantly, documentation and all of its furnishings and accessories need to be living, breathing organisms in our open-source ecosystem. To let them lie stagnant is to hinder the growth of the product. Their basic needs to be cared for and fed will be of paramount focus for me, and I hope for all those who contribute to core and thirdparty documentation, as well.
Making SilverStripe more inviting to new community members is a complex issue that requires input and effort from a variety of angles. There is no singular issue that will make all the difference. Breadth is much more important than depth. Whether it's core documentation, community member blogs, Stack Overflow questions, or live training sessions, stronger support systems will grow our community of contributors, and lead us to a more robust and viable product suited for a vast array of applications.