Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

For example, some library (in my case it's ruby gem) became deprecated. And my app is using this library. It's ok and I have not any problems with how it works. When should I switch from deprecated open-source library to something new? Or should I at all?

share|improve this question
up vote 3 down vote accepted

What was the reason for the deprecation? You have a responsibility to balance keeping your technology fresh with the demands of stable software. Every time you make a big change, you introduce a decent amount of risk that you'll break something doing that change. So evaluate the following for your situation:

  • Did I use the gem/library so pervasively in my system that I am forced to rewrite a lot of my code? If so, you better have a solid test suite to make sure nothing gets broken before you attempt an upgrade.
  • Is the library deprecated because of too many security/architectural problems? If so, you are in possession of a ticking time bomb. Start planning the migration now.
  • Am I currently in between releases? If so, this is the best time to consider what it would take to update the library.
  • Am I almost done with a release, or in the middle of one? If so, this is the worst time to consider changing the library. Just don't.

A deprecated library is a library without any support. It also means that as other libraries improve (such as the rails framework), they will become incompatible with the deprecated library. If you are trying to stay current with those libraries, you might be forced to migrate to the new version. Otherwise, you can keep your whole library stack the same and never have to worry about the updates. You won't get new features, but you at least know how everything works together.

share|improve this answer

Deprecated in general means don't use it to write new code. It's perfectly fine to keep it in old code, but as you continue to maintain it, you'll find that legacy code becoming more and more difficult to support. It's usually pretty obvious to tell when you must upgrade it, as that code will be holding you back from making other changes you want to make, but that could be several years down the road. In other words, you don't need to worry about it right now, but you should probably plan to make the move at some point most convenient for you, such as when you're making a new major release anyway.

share|improve this answer

Deprecation today means that bugs will not be fixed tomorrow, unless you do it yourself.

If you do not mind that, then no need to worry.

share|improve this answer

factors to consider:

  • Will your application need new features that are not provided by the deprecated library
  • Time / Effort involved migrating will you retain the original functionality and features?
  • will the new library make it easier to maintain your application code base and improve its performance and quality.
share|improve this answer

After you have written a full set of unit tests verifying your application's overall functionality.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.