That blog post from Alan covers the scenarios nicely. The problem is that you are looking for Feature to Feature dependencies and if you follow Helix guidelines, that is expressly forbidden:
A strict awareness of dependencies within the Feature layer is very important. One Feature module must never depend on another Feature module
ref: Helix Feature Layer
So lets look at your scenario:
- Feature.Blogs has Feature.Person as an author
- The ability to show the list of blogs within the author (Feature.Person.Templates.Person.Name)
- The ability to show the Author within the total of their blogs, some kind of Facet
First problem, the Feature.Blogs
module needs to display an author, and you have added the author data to Feature.Person
- so here is where you might consider either adding a Foundation.Person
module, that allows a Person
to be used by multiple features. This could be done via an abstraction of Person
into the foundation module, with the implementation still in the Feature.Person
module, or by just moving the relevant models and services to the Foundation module.
The next 2 problems are also solved by creating a Foundation.Person
module, this would allow interaction with the Person
part of the module from the Feature.Blogs
module.
Note that this doesn't remove the Feature.Person
module, you would still have that Feature module to provide specific implementations of the Person
business unit, e.g. Login, Sign Up, Account Profile.