I've been looking at Question2Answers:
However it doesn't look as mature as LampCMS - in particular the user interface enhancements or the profile page detail.
However I do like how well Q2A is documented when it comes to building plugins (which I am doing).
I'm keen to hear your thoughts!
Thank you. First of all I don't think Question2Answer uses MongoDB as backend database.
Lampcms uses MongoDB which makes it much more suitable for sites that expect to grow, in particular sites that expect their database of questions and answers to grow.
As for writing plugins, I have not looked at their system but Lampcms was designed with plugins in mind. It uses Event Dispatcher pattern to post events like 'onBeforeNewQuestion', 'onNewAnswer', etc.
Writing a plugin is as easy as extending \Lampcms\Event\Observer class and implementing your own login inside the main() method.
Yes, I agree Lampcms is not well documented yet, but the actual code is pretty well documented. All classes and method have fairly descriptive doc blocks, all parameters and return types are well defined.
Also you can look at some of existing plugins. For example EmailNotifier class in \Modules\Observers directory.
This class, while technically a core class of the system is also a typical "Module" - it listens to events and based on event type sends out various emails to members.
There are other examples of modules: LinkedIN, Blogger, Facebook - these are all modules that are written pretty much the same way - they listen to events and do their own things. Every module automatically has access to $this->Registry through which you can access any of the core classes like Cache, Mongo\DB, Mailer, and anything else.
Once you write your own module you will just have to add it to the [OBSERVERS] section in !config.ini
Again, there are couple of modules already defined in that section.
The system will then pickup your custom observers and will register them to listen to all system events.
Lastly, I suggest to look at the actual php code in other projects and compare it to Lampcms code.
Lampcms is 100% Object oriented, uses best practices, well known design patterns.