<i>CONTEXT</i><p>I work in disease modelling with some epidemiologists where we're looking into diseases like COVID-19 and tuberculosis.<p>My boss has built a compartmental modelling framework which we use for all of our team's research and forecasts. It was originally implemented in R and has since been reimplemented in Python and then reworked significantly. Here it is if you're curious (the framework part is under "summer"): https://github.com/monash-emu/AuTuMN<p>We want to make it easier for other researchers to use our framework, which requires a much nicer API. As the person who has the best understanding of the internals, I want to make significant breaking changes to the API because it's clunky and unintuitive.<p>There are now quite a few models that depend on the framework and making any major API changes to the existing code would be like changing the tyres on a moving car. I've decided to create a new version of the framework from scratch so that we can migrate our existing models across at our lesiure.<p>So yeah, cool, time to cast aside the chains of past implementations and stride into the bright shining future of version 2.0 where we get it right this time /s.<p><i>QUESTION</i><p>Is there a methodology, process or set of principles that I can use to help me design the new API for the next version of my framework? How do you go about improving / redesigning a framework API? Are there any resources that you recommend? Do you have any advice or guidance?<p>I have a good understanding of the features I need and how to implement them internally, it's the API design that I'm unsure of.
Some basics: don't: /get/articles/ . do: /articles. don't: /articles/all . do: /articles. /article/<id> and so on