Web development platform selection
Analysis and selection of tools for this project.
Python language
The Python language will be used because it:
- is multi-platform (comes pre-installed in most Linux/Unix/OSX distributions, and is well supported on Windows)
- has strong support for Web and SOA development
- has strong support for automated testing
- is the language of the ISIS-NBP project, so Bireme has a strategic interest in it
Framework
Given the choice of Python, the next step is to choose whether the CRTP project should use a mainstream Web framework, or develop it's own.
For this analysis, we will take Django as stable, full-stack Python Web framework. A different full-stack framework could be substituted, without significantly affecting the analysis.
feature | benefit | Django support | In-house framework support |
User management | creation/edition of users, roles and permissions | built-in API with high-quality UI | depends on component integration |
Automated form validation | improved UI with less code | yes | depends on component integration |
Documentation | enables contribution and customization from outside parties | plentiful, online and in books | depends on component documentation; integration must be documented in-house |
Object-relational mapper | uniform, vendor-independent database access | yes (MySQL, PostgreSQL, Oracle) | depends on ORM integration |
Flexible architecture | adaptation to future, unforeseen needs | yes, by replacing components | yes, by replacing components |
Platform Evolution | enhancements, new features and support for new technologies | contributions from a large, active developer community under proven leadership | depends on components; architecture must evolve from in-house efforts |
Caching | reduced server load and increased performance | built-in, extensible support for view, method and query caches | depends on component integration |
Internationalization | support for localized UI elements | built-in | depends on component integration |
Deployment | installation for production use | few external dependencies (usually 3) | each component potentially has external dependencies |
Automated testing | increased release quality and lower risk from changing requirements | yes, including database fixtures | depends on component integration |
Schema Evolution | schema changes automatically executed in production databases | depends on component integration | depends on component integration |
Content Syndication | updates and new items broadcast to subscribers | built-in RSS and ATOM protocol support | depends on component integration |