== Why a Rewrite? == Rewriting a large, working application is not something to be undertaken lightly. It is a lot of work & the payback at this stage isn't clear. It is being done to address some real problems with the the current Sahana codebase: * Sahana is developed in a custom PHP framework which is based on design principles which have since become sub-optimal due to the emergence of new MVC frameworks & highly-interactive Web 2.0 UIs. * The current codebase has grown organically since it was originally designed - standards have broken down & the code is becoming harder to maintain. * It is currently hard to access data from modules via consistent methods...this is required for serious integration e.g. in GIS & Messaging. * Using a framework reduces our maintenance overheads & allows us to focus on the user-facing application: * http://www.youtube.com/watch?v=1J91Ownq-7g * PHP is not a good language for building large, maintainable applications: http://www.ukuug.org/events/linux2002/papers/html/php/index.html * especially when using it to write out complex Javascript (the syntaxes are always tripping you up) * doesn't enforce Object Orientation * poor separation of Presentation & Code * Whilst there is a fairly coherent custom framework, it isn't adhered to consistently - different developers have done very different things in different modules * The Javascript components, especially, are very varied with lots of manual AJAX & the use of several different libraries * using a modern library means no issues with browser incompatibilities * consistency means less headers for clients to download ---- FrequentlyAskedQuestions