One critical point in Bruce’s question is to consider the user’s perspective, not just the CSL contributors, editors, implementors and clients.
I think what matters the most for all of us is that the user of CSL can format their manuscript with a minimal amount of fuss and time. To be honest, in my case, I’d go as far as to say they should not even know what CSL is. Typically, they are busy just formatting their damn f*** manuscript, and they want to submit asap, and not have to deal with the internals of their tools.
So I’ll talk about the module idea from the perspective of an end user.
From a user’s perspective, styles can come in 2 flavors:
- it’s integrated into their bibliography tool (Papers, Zotero, Mendeley, etc.) and they just pick the style
- a style is a file they receive from a colleague, a journal, from support, downloaded from the web
In case 1, modularity does not really matter, as long as the client app is not buggy and maintains a consistent repository with all the moving part.
In case 2, modularity can be an issue. The style would have to be packaged with all its dependencies, which means someone somewhere has to deal with the modularity.
Note that the above discussion also applies to dependent styles already today.
I don’t have an answer at this point. What I am leaning towards is a model where modularity is handled high up in the chain at the repository level, by the CSL contributors and editors. Styles could come in 2 flavors: with dependencies exposed (more flexible, but more brittle), and already pre-compiled (monolithic and solid). The transition between the 2 could mean 2 repositories, with one created from the other. The clients could decide to use one or the other. The implementors would have to write code that handles both types (the monolithic simply being a subtype of the more flexible one).
These are really my immediate thoughts without much more reflexion beyond the above. But I think the points about the user’s perspectives are critical and should guide everything else: whatever happens, CSL should stay easy to use and its internals transparent to the end user.
Charles