-
-
Notifications
You must be signed in to change notification settings - Fork 189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Writable API #1598
Comments
Current problemsThe first step in rebuilding/expanding the API is an assessment of its shortcomings. These include:
|
Prior artAPIs I want to imitate are on the one hand the pretix API (same tech, general peeking at style/handling) and on the other hand the Stripe API.
|
Transition planTechnical migrationGiven that we want to switch to Stripe-style versioning, without an API version in the URL, this is actually quite doable without interruption of existing APIs:
CommunicationsWe will have a big blog post explaining the new API. I don't think listing differences to the current one will be useful, but we should stress that old embedding behaviour can still be introduced, and that users will be safe on the old API for a set amount of time. Additionally, pretalx needs to warn users using a token for a deprecated API about the deprecation timeline, once per token (via interface as dismissible alert? But definitely via email). This warning should include the timeline, the endpoints used, to be triggered only after use (as all users have tokens!), and in this specific case, link to our blog post in addition to the documentation. Support timelinesAs I'm running pretalx on my own, and I'm fairly confident that future API changes will be less disruptive than this one, I think version upgrades should go like this:
This means I have to support two versions of the same endpoint for two releases, which feels doable and fairer than giving users only a single release to upgrade. It also allows for more relaxed testing of the new version – if we deprecate the old version immediately, while the new version is still unproven or may have problems, that leaves users with the choice of "new but sucks" and "deprecated but stable", which I'd prefer to avoid. This plan assumes that pretalx will release 2-4 times a year (which seems like a safe assumption right now), giving users at least half a year to test the new API and migrate (or at least ~3 months after receiving the notification). If releases get more frequent, we should revisit this. A downside of this choice is that users who use pretalx only once per year (for their event), will always have to update their tokens/versions. But as I don't think endpoint upgrades will be all that frequent or disruptive (if we turn "new field in output" into a versionable offence, that'll be an easy upgrade for almost everybody), I think that should be alright, and I'm not really willing to provide multi-year support for deprecated APIs as a solo developer. |
Yes, this sounds awesome :-) As we are planing already PyConDE/PyData 2024 and of course use Pretalx again, will a first useable version be released before the end of this year? I'm currently weighing up whether it makes sense to adapt Pytanis to the new API before the review process in Januar or not. EDIT: Okay, carefully rereading your initial post, it seems that it will take until February 2024. Then it will be rather subject for PyConDE / PyData 2025. CC @alanderex |
Yeah, I'm afraid there's absolutely no chance of any actual writable part landing this year – parts of the rewrite might be merged this year, but I'm involved in running a large event at the end of the year, so most of the progress will take place next year. |
@rixx If you have time, could you add an update on the progress or update the estimates? If there's anything I could help with, feel free to let me know. |
This issue represents the current progress. The initial issue statement contains a big checklist, which is updated whenever things get finished. I assume your impatience is due to the time estimates there – I'll remove them to avoid future confusion. It'll be done when it'll be done. |
This issue tracks the design and implementation of a new, writable REST API. The development of this feature is possible due to NLNet and their NGI Zero Entrust grant. Thank you! 💖
Project plan / Progress tracker
This checklist omits (by necessity) a lot of details, but tracks the project plan submitted to (and approved by) NLNet. Please note that I can't provide a timeline. I hope to get the whole thing done in 2024, but, y'know, this estimate is provided AS IS etc etc.
Further updates will follow in comments to this issue.
The text was updated successfully, but these errors were encountered: