Jared Norman is an experienced software developer and the founder of Super Good Software. Follow Jared on Twitter!
Published October 31, 2019
Last week, the Solidus community gathered in Salt Lake City to discuss the future of the platform and ecosystem. Over the course of four days, we discussed where we’re at, where we’re headed, and laid the groundwork for moving the platform forward.
Solidus Conf has existed in some form since the very beginning of the project. In the spring of 2015, developers from Stembolt and Bonobos disappeared into the forest near Whistler, BC and emerged after a week with a plan and a direction for the new platform.
Every year since there’s been another conference: 2016 we invaded Toronto, 2017 was across the pond in London, and last year we found ourselves talking Solidus over the best barbecue that Memphis has to offer.
It’s fair to say that this is a big year for the conference and the platform, though. Last year in Memphis it was announced that Stembolt had been acquired by Juul and would no longer be stewarding the platform in their previous capacity. This meant a lot of change was coming and while we did our best to plan for the future, it was really hard to understand what this might mean for the community.
This year’s conference took the same format as most previous years: two days of conference talks and two days of hack days. The presenters this year all did a fantastic job.
Thomas Sample of Karma Creative kicked things off, jamming more than one hundred SEO tips into a single talk. It was an awesome way to start the conference. Thomas does a ton for Solidus and his energy was a great way to start the conference.
Next was one of my favourite talks; Ryan Cromwell of Sparkbox spoke about “Making the Leap to Tech Lead”. At Super Good, levelling up our developers is one of our main focuses and Ryan had a lot of great advice around organizing streams of work and making space for team members to grow.
The third talk was focused on how consultants might improve our ability to gauge the quality of the codebases we’re jumping into. Ernesto Tagwerker from OmbuLabs presented on his new tool skunk which provides an integrated code smell/test coverage heuristic, so you can identify major code liabilies when stepping into a new project.
After that, Taylor Scott gave us a complete breakdown of the continuous integration and deployment process they use at Deseret Book. Having run Solidus (and Rails) apps on a few of Amazon’s different hosting offerings, it was interesting to see how they’re leveraging Elastic Beanstalk and GitLab.
For the final talk of the first day, Peter Berkenbosch went over some of the lesser known extension points in Solidus, and some cool uses for them. A lot of work goes into making Solidus more extensible, so it was great for someone to help raise up some of the lesser used extension points.
As I mentioned before, this was the first Solidus Conf since Stembolt stepped back from their role as the primary directors of the Solidus platform. As such, everyone was curious to see what Nebulab has been doing to continue to maintain and grow the platform. Alessandro stepped up to outline everything they were doing to keep our extension ecosystem healthy.
Firstly, they’re moving all the non-core extensions into the Solidus Contrib organization. The core team of Solidus is responsible for the extensions and main gems, now all housed under the main organization. The broader community is responsible for the maintenance of everything under the contrib organization.
Before Stembolt was acquired by Juul Labs and merged into their development team, Stembolt had adopted an internal policy that all employees working at the company would be responsible for one or more Solidus extensions. This was to ensure that even lesser-used extensions had someone directly responsible for them who would respond to pull request and issues and keep them up to date.
Nebulab has implemented the same policy. While they welcome support from the community in supports the extensions in Contrib, each extension has a Nebulab developer responsible for it’s maintenance. While this policy was only somewhat successful at Stembolt, Nebulab has set themselves up for success with it. Nebulab dedicates Fridays to non-client work: writing blog posts, working on internal tools, and open source work. Time of this kind of open-source work is baked into their process and it’s great to see that kind of commitment.
On top of committing to keeping the ecosystem maintained, they’ve done some great work to make that easier for everyone. They’ve updated solidus_cmd to make various maintenance tasks easier and adopted a consistent README format for Solidus extensions to make it easier for those new to Solidus to understand what the extension ecosystem has for them.
They’re using dependabot and Pull Reminders to stay on top of updates, as well as GitHub Changelog Generator to make sure that it’s as easy as possible to upgrade all the extensions your store is using.
Finally, they’re committed to addressing the issues we’ve talked about for a long time in the Solidus (and Spree) communities:
class_eval is bad and
Module#prepend isn’t much better. The success of the extension ecosystem is contingent on becoming less dependent on these methods of modifying Solidus’s core and providing the configuration options and extension points that real stores need. It’s great to see them continuing that effort.
I was really glad to see that some serious thought is going into how we’re handling extensions and that Nebulab is doing their part to keep the ecosystem up to date. That said, they’re only one member of this community and they need the assistance of the rest of us to make Solidus as awesome as it can be.
Day two featured talks from Joel Saupe on the Solidus API, Jen Luker on how we can make sure not just our products, but our companies are accessible to everyone, Braden Douglass on breaking up monoliths with microservices, and Jason Swett on how to confidently modify legacy code, something everyone work on Solidus has to do on a day-to-day basis.
We also had a lightning talk section that provided some really great insight into what the community is working on. Eric Saupe from the core team described the architecture of the point-of-sale system he’s working on. Matthew Bass showed off an awesome shipping rate estimator that sidesteps the unreliable APIs they’d normally use, but still makes sure you’re charging your customers the right amount.
They went over the community survey results, reviewed independent market research, examined alternative eCommerce platforms, and used common sense to outline a laundry list of what Solidus needs to continue to grow.
There are tons of stores on Solidus today, but the more stores we can bring to the platform, the more open source contributions we can leverage to make this a better platform for everyone.
The roadmap is public and can be found here. It’s a work in progress, so there’ll be more prioritization and consultation to come, but it represents the next steps for the Solidus platform.
The final talk of the conference (and what a talk to end on) was from Sean Denny. Sean is a member of the stakeholders team and did a ton of work to make this year’s conference (and last years) happen.
Sean started by outlining the history of the project and how the organization functions now, before diving into his thoughts on the next steps for Solidus. He’s done a ton for this community, so when he talks about the need for greater diversity and calls on everyone to “take responsibility” for moving Solidus forward, it carries a lot of weight.
I encourage everyone in the community to go give his talk a listen once it gets posted.
Hack days are a staple of Solidus Conf. They help capture the energy and enthusiasm that builds around the conference and turn that into real contributions. Having everyone in the same room helps facilitate broader discussions and provides opportunities for newcomers to the platform to get involved.
This year we saw everything from optimizations that leverage new Rails 6 features to some of our oldest issues closed. I spent my time getting the discard project cleaned up to enable us to complete the migration away from paranoia.
The Solidus stakeholders team meets weekly to manage the project, so this week we held our meeting at the hack days and made it open to anyone who was present. Everyone at the hack day was able to voice their opinion and get a look at how things are run.
This facilitated discussions around the material in the roadmap, what might be missing, and how to best prioritize that. There’ll be more to come on that as the stakeholders team continues to refine the roadmap process.
Solidus is a community made up of store owners, consultancies, individual developers, and more. Part of our strength is that so many businesses are build on the platform and are invested in its success.
The biggest next step for the stakeholders team, the core team, and other members of the community is to finish to fleshing out the roadmap.
We’re also focused on increasing the funding of the Solidus Open Collective in order to hire a full time maintainer. Many of the tasks to support that are on the roadmap, but if you run a business on Solidus, consider a recurring contribution. If you look back on the everything that John Hawthorn did for the platform, it’s clear that a small investment can pay massive dividends here.
The community at large is focused on improving the extension ecosystem. Extensions enable new stores to jump onto the platform with minimal friction, so continuing to build on our robust suite of extensions is critical to the continued growth of the platform.
Finally, expect to see more regional meetups and events around Solidus. The team and community are both aligned that these events do wonders for bringing us together and helping grow the platform.
Solidus started when a bunch of developers wandered off into the mountains in British Columbia to try to improve the state of eCommerce on Ruby on Rails. While the locale has changed, we’re still here, we’re still making eCommerce better, and you better bet we’re still hiking off into the woods.