Nim programming language finally hit 1.0

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Oct 3 23:52:30 UTC 2019


On Thu, Oct 03, 2019 at 08:50:53PM +0000, Ola Fosheim Grøstad via Digitalmars-d wrote:
> On Thursday, 3 October 2019 at 19:54:32 UTC, Russel Winder wrote:
[...]
> > If you end up using a library that was third-party maintained but
> > gets abandoned, do not take the time to take over maintenance,
> > change to another library. There is generally a very good reason the
> > library got abandoned, and there are invariably very good newer
> > replacements.

That sounds good in theory, but in practice it will usually involve
changing to a different API, and translating the old code to the new API
(or writing a proxy wrapper) may be non-trivial (if even possible --
some may involve changing the entire operational paradigm that makes it
infeasible to rewire). If that library is mission-critical I would not
want to take the risk of leaving it up to the whim of whomever is
hosting the source code online to remain online when I need it to be.

Just imagine the hypothetical case that you have a massive vibe.d
project, and suddenly one day for whatever reason vibe.d becomes
unmaintained / the repo goes offline or whatever. Well, no problem,
there's Adam Ruppe's arsd library with web handling, right? Just change
a few lines in dub.json and off you go?

The difference in API alone will probably entail rewriting the entire
darned codebase before you could even get the thing to compile, let
alone fixing all the bugs that were introduced in the process.

Drop-in replacement is a pipe dream.


> That's not really possible in a larger project that has been deployed.
> That would incur large costs. Besides there might not be another
> PDF-generating library for you to use, or sound synthesis package that
> is anywhere near compatible. Even in Python, if I cannot use the PDF
> library I am using now, I would most likely set up an additional Java
> service rather than trying to pull in another PDF library written in
> Python.
[...]

Exactly. Most non-trivial libraries of equivalent functionality tends to
have drastically different APIs. It is not as easy as it sounds, that
you just drop in a different library in place of the one that got
abandoned.  In a large, non-trivial project switching components like
that is a big no-no unless there's a very compelling reason to, *and*
you have the time and resources to pull it off (and clean up the
resulting mess afterwards).


T

-- 
WINDOWS = Will Install Needless Data On Whole System -- CompuMan


More information about the Digitalmars-d mailing list