views:

177

answers:

9

My teammate and I have an argument,
Is there a reason not to use the latest version of a library if we haven't coded anything at all yet?
Right now we are talking about boost. We use a framework that uses some of boost's libraries. There is no API or ABI breakage, boost is mostly production stable.
So why not use the latest version of boost or any other library/framework if we actually need it?

Related to this question

A: 

It depends.

On questions such as:

Have there been reports of problems with the latest version?

Does the latest version have new licensing issues?

Mitch Wheat
+2  A: 

TBH the old "if it ain't broke don't fix it" adage is very useful on these things. Not to mention the fact that somewhere your system may be holding together due to a side effect that will no longer happen with a new version.

Its worth doing but don't do it unless you are just starting a new project, IMO.

Goz
+1 - exactly. Make a decision and stick with that unless you're forced to upgrade because something brakes.
Richard Corden
+1  A: 

I think that generally the latest version of a library is a always a bug-fix (or an improvement) of the previous... so why not to use?

Obviously never take the alpha o beta version but only the latest stable version!

xdevel2000
+4  A: 

My view is that generally I will try to use the latest stable library at the start of the project. However, you need to know whether other dependent libraries will correctly function against the latest version. There'll normally be some lag, in that vendor B needs to determine that their library works against the latest from vendor A.

Throughout the project lifetime, I try to maintain the latest versions of libraries (subject to inter-library compatibility). Why? Because if I lag behind and then have to do an upgrade to fix a library bug, if I've not kept up to date then upgrading one library may force an upgrade of other libraries (for compatibility) and suddenly I have to regression test a lot more than just one library.

Brian Agnew
+3  A: 

My strategy is this:

Is such library well supported and/or frequently updated?

  • YES: no reason against using latest version, even unstable: more difficult at the beginning (i.e. bugs) but makes your application more stable when library gets stable, too, because you won't have to migrate to the new version. Migrations to a new "major version" are almost never error-prone...

  • NO: use only the latest stable version. Period.

Megadix
+1  A: 

You have to weigh the risks of using a new, less proven version of the library with the costs of not using that version (ie. writing and debugging your own). And since Boost is open source, it's harder to argue that you should be writing your own. Why not start with Boost and contribute back any bug fixes?

HTH, Kent

Kent Boogaart
+1  A: 

There are pros and cons either way.

If you don't keep up to date with the latest version then you may not get support for the one you have opted to stick with.

On the other hand, if you chase the latest version then you obviously have to put the work in to make sure that it is compatible with your application(s). Remember: One Mans Bug is Another Mans Feature.

We use the Infragistics control suite in a number of applications and to be honest unless I see a tangible benefit I'm loathed to upgrade. If the new release addresses a bug that has a direct effect on the application or provides some new functionality just too sexy not to have then I still need to justify the work involved making sure that something else has not been adversly affected.

It's a fine line with no right answer - apart from 'It depends'

DilbertDave
+8  A: 

On a linux system it has advantages to go with the library version that comes with the system, even if it's not the newest possible one anymore. Your application will be easy to install on the system, there will be no conflicts with other programs requiring a different version of the library and you don't have to build the library yourself.

If boost today releases a new version of their libraries, it will take a while till this version arrives in the stable distribution of your target system. It makes your program more flexible and easier to deploy if you stick to the older version's API.

Of course if you would like to use some new features of the new version it might be worth it to use the most current version anyway.

sth
Here's what I was looking for...Thanks.
the_drow
+2  A: 

Is there reason to use latest version?

YES:

  • It is bugfix release and bugs that affects your project were fixed.
  • It contains new features that you needed.

NO:

  • There is possibility that new bugs were added and it'll be necessary to test all modules that uses that library again. If your tests are fully automated, it is not a big problem.
  • API possibly was changed and you'll be forced to update your code.

Finally, I would not recommend to update third-party libraries, if you at Release Candidate stage of your project. Just in case.

Kirill V. Lyadvinsky