This post describes how to spot and improve a Helix module that exhibits Unearned Foundation Status. It's part of a series documenting Helix Smells - some of the common pitfalls of Sitecore development when following the Helix architecture.
This post describes how to spot and resolve a Fat Foundation module. It's part of a series documenting Helix Smells - some of the common pitfalls of Sitecore development when following the Helix architecture.
"Helix Smell" is the term I use for a sign that there might be a problem within a Sitecore Helix implementation. Each Helix smell has a name and definition. I hope this will provide Sitecore developers with a common vocabulary for discussing issues in their Helix solutions.
It seems like a lot of Sitecore developers struggle with Helix, finding it more of a hindrance than a benefit. Perhaps Sitecore have been too prescriptive in their documentation. Maybe the Habitat example site overwhelms people. Whatever the reasons, I don't think it needs to be that way.
If you distill Helix down to its essence, you'll find a collection of 6 architectural principles that were originally codified by Robert C Martin. They're known as the 'Principles of Package and Component Design' and they're not too difficult to grasp. That said, the language he uses can get pretty complex. So here's my attempt to translate the principles for new Helix developers.
The first 3 principles focus on managing dependencies within your system. Broadly speaking, they help you decide which Helix layer your code should be added to.
Stable Foundation / Volatile ProjectEvery Foundation module will probably have lots of dependent Feature/Project modules. As a …
This is the second in a series of posts looking at the similarities between Sitecore Helix and Domain Driven Design. This time I'll focus on the DDD concept of Bounded Contexts and how understanding them can deepen your appreciation of Helix.
This is the first in a series of posts in which I explore the parallels between the Sitecore Helix architecture and Domain Driven Design (DDD). I think Helix has been heavily influenced by DDD, and a good place to start is to introduce its concept of 'Ubiquitous Language'.