When publishing a package for use by programmers, automated changelog generation is very beneficial. In this blog post, I explore how to do it in a simple way that works everywhere.

  • HaraldvonBlauzahn@feddit.org
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    15 hours ago

    What would really bring the state of the art forward would be automated checks whether a given interface change is really fully backwards-compatible or not. But this would need to catch changes such as

    • changed behaviour
    • removed functions, methods, enumeration values, …
    • added exception types or error codes in return values, leading to looser post-conditions (client code needs to check for additional errors)
    • stricter pre-conditions
    • in libraries, upgrade to dependencies which include any breaking changes (because they can now conflict with other dependencies in a formerly working client project, and break these).

    (Edit: There is a brilliant YouTube video by a guy called Rich Hickey, with the title “Spec- ulation”, which talks about these foot-guns. Hickey is designer of Clojure, a Lisp dialect for the JVM, but his observations are independent of languages - it is all about APIs).

      • HaraldvonBlauzahn@feddit.org
        link
        fedilink
        arrow-up
        1
        ·
        8 hours ago

        It is the whole topic of Rich Hickeys talk linked above that breaking an API is a choice. And it is not a solution to not define an API and not agree any contract at all.