The entire point of LTS is that things don't change. Security features are back ported, but you're on Node 0.10 because when 14.04 was released it included Node 0.10. You have an old version of youtube-dl because that's what was available at the time.
You use an LTS release when you want to do 'apt-get upgrade' and not change anything. No new features, no deprecated features, no changes other than back ported bug and security patches. No moving to a newer version of Apache which uses different modules by default, or a newer version of PHP which changes a critical default variable. It's always the same software, just fixed when it's broken.
If you're looking to keep your system up-to-date with the latest and greatest, then there are a few suggested solutions:
1. Install stuff yourself
2. Use a backports PPA or vendor packages
3. Use a more specific package manager (e.g. pip for python, cpan for perl, npm for node, etc)
4. Update your servers more than once every four years
If you want the latest version of software, you need to not use the LTS version, and you need to update to the newer releases as they're released, because the entire point of LTS is not to do the thing you're asking to do.
Also as follow on, you'll find that the packages that draw community support also tend to have PPAs (personal package archive), these are very easy to add to Ubuntu these days and typically backport more recent versions of software to older LTS (and sometimes non LTS) Ubuntu releases.
For example I use the nginx PPA on some of my older servers and it supports nginx 1.11 on Ubuntu 14.04 even thought 14.04.4 LTS only supports 1.4.6.
Every time someone suggests this it makes me a bit nervous because you're advocating I install binaries compiled by some random person and deploy them on all my production servers. If there were official backports of some sort from the python people for example, then yeah, but otherwise, nope nope nope.
The parent example was saying about official ppa only, official as in the original software company providing that ppa. In this case, nginx ppa is provided by nginx developers. Other example is postgres.
While you're correct, it should be noted that "security backports" are much less complete than they'd have you think.
Do NOT take the promises of enterprise distributors for granted, both because there are a lot of security problems that never get fixed, and because the expertise to sufficiently backport is often lacking (cf. the Debian SSL entropy crisis of some years back).
You are usually better off using a newer upstream with the security fix integrated than relying on a distro-pushed backport. For a demonstration, try installing redis from the official Ubuntu repos.
New users going into Ubuntu have no clue that going to ubuntu.com and clicking "Download" will give them an incredibly out-of-date OS.
> The entire point of LTS is that things _don't_ change.
That's not the root problem.
The root problem is that people want non-broken software, and updates sometimes break things.
LTS is one workaround, by committing to make as few updates as possible (mostly only high-impact security patches), you limit the likelihood that updates will break things.
But the problem is, not having updates also breaks things. `youtube-dl` is my usual example. Others include that having an old version of Node will break software that expects newer versions of Node.
The solution I'm proposing is to let the user choose whether or not they want up-to-date software on a case-by-case basis. I did not expect this to be so controversial.
> 1. Install stuff yourself
This is not a suggested solution, this is the problem we are trying to find solutions for.
> 2. Use a backports PPA or vendor packages
> 3. Use a more specific package manager (e.g. pip for python, cpan for perl, npm for node, etc)
These are workarounds that are MUCH less usable than just using the distro's built-in package manager. It is true that I can do this (mostly, I just build from source), but what I am asking is a way to make this easier, because it is a common problem that everyone has, and because it's the entire problem that a package manager is supposed to solve in the first place.
> 4. Update your servers more than once every four years
> If you want the latest version of software, you need to not use the LTS version, and you need to update to the newer releases as they're released, because the entire point of LTS is not to do the thing you're asking to do.
Sometimes, you want some of your software to change and other software not to change. The job of a computer is to do what the user wants it to do, is it not?
Like, if I'm using LTS, it's presumably because of something like "wifi works on this exact combination of system software and I don't want to risk it breaking with a random update". So the default would be to install software from a known working system. But I should be able to explicitly opt into installing other up-to-date software; keep my browser up-to-date and all that.
That's why I'm proposing a new command, so you can type in something like `apt-get install-latest youtube-dl` and get the latest version. `apt-get install` would still work the same as before.
You use an LTS release when you want to do 'apt-get upgrade' and not change anything. No new features, no deprecated features, no changes other than back ported bug and security patches. No moving to a newer version of Apache which uses different modules by default, or a newer version of PHP which changes a critical default variable. It's always the same software, just fixed when it's broken.
If you're looking to keep your system up-to-date with the latest and greatest, then there are a few suggested solutions:
1. Install stuff yourself 2. Use a backports PPA or vendor packages 3. Use a more specific package manager (e.g. pip for python, cpan for perl, npm for node, etc) 4. Update your servers more than once every four years
If you want the latest version of software, you need to not use the LTS version, and you need to update to the newer releases as they're released, because the entire point of LTS is not to do the thing you're asking to do.