So far there was a need to extend Hatta in following ways:
These require different kinds of plugins.
It doesn't make much sense to have multiple backends for a single instance of a wiki – you always use exactly one – so there are no problems with plugin coexistentence. You just implement a
WikiStorage class with all the required methods (possibly using inheritance if your backend only has minor variations compared to existing backends), and you tell Hatta to use that for storage.
It may be worth to consider splitting some of the backend functions into separate plugins though. One thing worth splitting is page merging – different types of pages may benefit from custom merging algorithms.
There are basically two routes one can go. You can write your own parser (or subclass an existing one) and replace the default one – this is covered by custom page types – or you can try to somehow add markup to the existing parser. The latter should be much easier to do, but it is harder to design – especially when you realize that different additions may be conflicting with each other.