HACKER Q&A
📣 The_Amp_Walrus

How do you go about designing / redesigning a framework API?


CONTEXT

I work in disease modelling with some epidemiologists where we're looking into diseases like COVID-19 and tuberculosis.

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

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.

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.

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.

QUESTION

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?

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.


  👤 osdotsystem Accepted Answer ✓
Some basics: don't: /get/articles/ . do: /articles. don't: /articles/all . do: /articles. /article/ and so on