Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> just include in the warning that it is not maintained.

I'm convinced this isn't possible in practice. It doesn't matter how often you declare that something isn't maintained, the second it causes an issue with a [bigger|more important|business critical] team it suddenly needs become maintained again.





And here's where your business can contact me to talk about a support contract.

If it's important, they'll pay. Often you find out it wasn't that important, and they're happy to figure it out.


It sounds like you're imagining open source whereas the comment you're replying to is imagining more intra-company dependencies.

I think deprecation in intra-company code is a completely different beast. You either have a business case for the code or not. And if something is deprecated and a downstream project needs it, it should probably have the budget to support it (or code around the deprecation).

In many ways, the decision is easier because it should be based on a business use case or budget reason.


The business case is the easy part, the quagmire is in getting the different teams to agree who should support the business case, why it's more important than the business cases they wanted to spend cycles on instead, and how much of the pie supporting it takes on the budget side. Less so when the place is small enough everyone knows everyone's name, more so when it's large enough they really don't care what your business case is much even though it'd be 10x easier to support from their side instead of another.

Oh. But that is a solved problem. The users of the library just copy the code from before the deprecation and then stick it in their codebase not to be maintained anymore. Problem solved. /s

> I'm convinced this isn't possible in practice.

I don't agree. Some programming languages started supporting a deprecated/obsolete tagging mechanism that is designed to trigger warnings in downstream dependencies featuring a custom message. These are one-liners that change nothing in the code. Anyone who cares about deprecating something has the low-level mechanisms to do so.


For sure, but for this to work you need someone downstream to notice those messages and prioritize the work to migrate off the deprecated code paths. Some teams will respond, but many won't. No matter how loudly you declare that the code is deprecated, you'll still have people using it up to the point it stops working.

It's far better to plan the removal of the code (and the inevitable breaking of downstream users systems) on your own schedule than to let entropy surprise you at some random point in the future.


> For sure, but for this to work you need someone downstream to notice those messages and prioritize the work to migrate off the deprecated code paths.

Deprecation messages show up as compiler warnings. As a package maintainer, your job does not include taking over project management work in projects that depend on your package.


I don't know that I see why/how this is a problem? You would do the same with any other thing in your life?

More, in many things, we have actively decided not to do something anymore, and also highly suggest people not mess with older things that did use it. See asbestos. Removing it from a building is not cheap and can be very dangerous.


It also keeps slowing down development as getting a green global compile will make you still update "deprecated" functions that face breaking API changes.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: