3 ms·
How else would you introduce backwards incompatible changes? Especially with the LTS upgrade path that alasdairnicol mentioned I wonder what there is still to i
by Flip-per 10y ago
How else would you introduce backwards incompatible changes?
Especially with the LTS upgrade path that alasdairnicol mentioned I wonder what there is still to improve.
- stefantalpalaru 10y ago> How else would you introduce backwards incompatible changes? Not at all. That would have the added benefit of core developers thinking twice before introducing a new API - exactly like it happens with Linux syscalls.
- PeterisP 10y agoIf you want to be backwards compatible, then you "simply" do not introduce such changes, there's no "how", you don't. A platform that works hard to be backwards compatible does only additions and extensions, and keeps maintaining the old API as well so that old apps run without changes; possibly keeping around multiple depreciated ways to do the same thing (e.g. as win32 does). It is debatable whether backwards compatibility is worth that cost (and it often isn't), but it's certainly a choice.
- imtringued 10y agoMark it as deprecated, change the documentation to tell the user to use the new function Y instead and the most important part: keep the old api even if it's crufty. Wait for a few years until everyone upgraded and no longer uses any deprecated functions. Maybe make a final LTS release for those who don't want to upgrade. Then and only then should you ever break backwards compatibility.
- ubernostrum 10y agoWait for a few years until everyone upgraded and no longer uses any deprecated functions. Then view HN threads of people saying they have thirty-million-line codebases which utterly rely on deprecated functionality and they never ever plan to upgrade or do even basic maintenance ever for any reason ever, and will abandon your platform and completely rewrite in something that treats them "better".
- lanstin 10y agoI worked in a C shop for like 8 or 10 years and we never introduced a back-wards incompatible API release. There were a few changes that required all servers to be restarted (not at once) to change network protocol (16-bit fields overflowing, that sort of thing). But it was inconceivable that you'd break something that is working. To be sure, we took a couple of weeks before designing an API, and for no one was the API they wrote and shared with others the first API they designed as an adult. Even when the implementation mutated out of all recognition, the API owner would just do whatever re-coding/re-implementation was needed behind the existing API.