Jabberwocky: Velir’s Answer to Speeding Up Development on the Sitecore Platform
Update: Velir’s Jabberwocky framework has been updated for Sitecore 9.0, initial release. This update doesn’t add any new features beyond support for Sitecore 9. For now, the package is marked prerelease, due in-part to the dependency on Glass.Mapper, which is still in prerelease for Sitecore 9 support. We’ll be assessing the framework during our upcoming Sitecore 9 upgrades and projects, and will correct any uncaught issues with the framework. A final release will be available in the coming months.
We’ve built more than a few Sitecore sites here at Velir over the years. When we first started, back in 2000, our team was smaller, and it wasn’t difficult for the entire development department to collaborate on best practices; in fact, it was hard to avoid because there were so few of us. On each project, we would do some things really well, and then, of course, there were some things we could have done better. Over time, we found ourselves borrowing code from previous projects to accelerate new ones. As Velir grew, and the number of concurrent projects grew, we quickly learned that it was in our best interest to normalize this process.
The aim was to get all of our projects started on common ground and give our developers a set of libraries that captured what we’d learned in the past, to provide them a solid foundation to build upon. Equally importantly, we needed to be able to maintain these libraries in a way that could be expanded upon, since the Sitecore platform continues to evolve. This is fairly common among Sitecore development groups as they grow, and many other Sitecore shops have their own internal set of libraries that they pass around from project to project. Velir’s set of modules is called Jabberwocky, and we’re happy to share it with the Sitecore community. Jabberwocky allows us to speed up development on the Sitecore platform, ultimately helping us to turn around solutions for our clients faster.
Jabberwocky is Velir's answer to the age-old adage: don't repeat yourself (we too, like to keep things DRY). It's a collection of loosely-coupled modules intended to help speed up development on the Sitecore platform, and just generally make developers’ lives easier while doing it.
Similar to what Helix has done for Sitecore solution architecture, Jabberwocky has been built to help push developers into the pit of success. It's opinionated in that it has a set of base libraries that it works well with. However, it doesn't force us to use anything we don't want to. We can pull in just what we need. This ultimately allows us to be efficient in our development process, and build quality solutions, thereby passing along the cost and time savings to our clients.
Jabberwocky is built around a few core philosophies: reliability, reusability, and performance.
Reliability – code that has been tried and tested is always a bonus, and we get that with Jabberwocky. In addition, it provides developers with the tools to build flexible, reliable, and testable components with Sitecore MVC and Glass.Mapper. Stability is achieved with error handling via Polly, so that components can fail gracefully without bringing down a page or an entire site.
For our clients, reliability means that they spend less time reacting to issues and can instead focus on pushing their site forward to improve experiences for their customers.
Reusability – this speaks for itself. No one likes reinventing the wheel repeatedly. Jabberwocky accelerates projects so we can jump right in and start implementing features, rather than spending hours bootstrapping each solution with the same things over and over. The design patterns encouraged by Jabberwocky remove much of the overhead for scaffolding a component as well. We’re able to set up models and views to inherit from the provided base classes and jump right into implementing them.
For our clients, reusability saves time and ramp-up costs. Projects get up-to-speed quickly, and development time is spent on our client’s specific requirements and use cases. We can now use time and money that would have otherwise been spent on foundational setup and configuration activities, on developing specialized, high-value features instead.
Performance – is enhanced by built-in profiling tools that give our developers continuous feedback on the efficiency of the components they are building. We can see the results of our changes in real-time rather than waiting until the end of a sprint or release (when we would have to scramble to address performance issues). Jabberwocky’s integration with Miniprofiler is built to give granular performance data deep into the Sitecore stack, so we can see exactly where time is being spent serving up a page.
For our clients, better performance means they can do more with less – that is – spending less on hosting and infrastructure, while providing a better user experience for their customers.
Want to know more about the inner workings of Jabberwocky? Read the docs here.
Want to check it out yourself? Jabberwocky is available via NuGet.
Want to contribute? Jabberwocky’s source is available on GitHub.
Do you have experience with speeding up development on Sitecore? Do you have feedback on Jabberwocky? Join the discussion below via the comments.