I just wanted to share some things I think might improve OpenMRS which might be bigger changes so I thought of the roadmap and saw 3.0.0. Not sure if there is already a place where there are wishes/plans. Wiki is currently down so I cant see https://wiki.openmrs.org/display/docs/Technical+Road+Map
Some thought are:
make openmrs cloud-native/adhere to 12 factor apps rules https://12factor.net/ (like for example take configs out of environment variables not files/java properties; only log to console appender not files). This would make it easy to deploy openmrs on cloud providers, ease development
ensure spring starts immediately when openmrs is deployed (and remove all the static Context, OpenmrsUtil methods). Leverage Spring to get configs out of the environment. Make use of spring profiles?
use java 8 time api, instead of java.util.Date
Are these realistic for example for 3.0.0? What would need to be done for the openmrs ecosystem (modules, distributions, implementations, …) I am sure you have tons of ideas of what you would you like to see, please share! And what can we do to already work towards these goals
Love these ideas. Some more thoughts for OpenMRS 3.0.0 (some technical, some more cultural):
Add more business logic into the Platform (e.g., incorporating emrapi methods like we discussed recently in a design forum).
Steps toward cluster support
Remove use of singletons (as you mentioned)
Begin using & promoting redis (or similar) for application state
Review queries for those that might not be safe in a clustered enviromment & refactor them
More automation, including integration tests
Utility functions for escaping all user-entered content by default when rendering (i.e., opt-out of escaping when displaying content) to better address XSS vulnerabilities.
Stretch goals:
Convert to postgres as default database
Migrate from JIRA to GitHub for issue management
…
For 4.0.0:
Make our API horizontally scalable (clusterable)
For 5.0.0:
Separate the API into microservices
Containerize services so they can leverage whatever technology suits their needs best (e.g., nosql databases)