What could be the path to develop the new core? Start from zero, loosing all work done till now, do some adaptations on actual code, or something in the middle?
My idea is that it be something in the middle. Start a design on how could be the next core, being aware of what was already done, and how, and in the other hand, start to adapt the actual development branch to make easier to fit on it.
The first part is yet to be started, or not, there are a lot of things already written for that goal, even some tentative implementations, but of all possible ways to code it, even doing it from a right, object oriented and very structured fundation, need to have some considerations on the directions/goals of the actual implementation. It should use smarty for presentation of content, or some other alternative similar to actual .tpls, be able to hold in a way or another most of actual content, be possible to arrange the layout of the page in a similar way as actual, and things like that.
The second is in a way or another also started. How would be the path to follow? Hardcoding less (i.e. what was done with the application menu), using higher level functions that hides details from actual code implementation details (like was done in code with the database abstraction with adodb or in the templates with the tikimodule smarty extension), using less arbitrary choices for sections of tiki (like the ongoing effort to normalize permission names) and so on. The trick here is to evolve actual implementation, maybe with easily done changes in all the suite, to maintain being functional (and maybe even more powerful in the process) but also easier to be adapted for a background change.
In that way, hopely, moving actual features to a new core will need maybe small changes and adaptations. Doing a mutual approach from the core direction and a current code direction the migration will not only be easier, maybe even will be the only way it could be possible