This resonates with my experience learning CM6 too. I would describe it something like this:
In addition to CM6, I’ve used a number of other libraries/frameworks for text editing, for UI, and etc. They often share similar ideas for how to structure code and expose levers for making your own editing experience. As a result, I’ve built up a number of code architectures/approaches to doing certain kinds of tasks with text editors that I can usually apply in some fashion, no matter the text editor library.
CM6 has created a number of new concepts around how it thinks about and structures the factors that make up text editing. Things like Facets, like a more functional/dispatch runloop, reconciling changes to multi-cursor selection support, etc. Even with my own decent background in web and functional programming, and even having read much of CM6’s source and Marijn’s writing, I sometimes find it challenging to represent the tasks I want to accomplish in the vocabulary and concepts that make up CM6.
I don’t think this means the documentation is at fault, nor does it mean CM6’s concepts are too challenging. In fact, I have learned a bunch from reading both. Instead, I think because these concepts represent a pretty big change from how text editor libraries used to work, I haven’t yet internalized how to think about the tasks I want to achieve using CM6’s concepts, and I don’t have a good mapping of how other libraries would translate their way of doing things to CM6.
My reading of this thread is that folks are trying to call attention to this, and suggest that the CM6 community begin thinking about patterns for ways of doing specific text editor tasks using CM6 as compared to previous ways of thinking about that task, so we can provide a path to onboarding potential users (including ourselves) to CM6 that requires less commitment than reading and understanding its architecture docs.
In some ways, it reminds me of React’s first years, as people readjusted from jQuery-style imperative chaining to a more functional way of thinking about UI.