News for hackers. Stuff that matters.
Re:“This version of XScreenSaver is very old. Please upgrade” by jarcane on Saturday April 02, 2016 @01:59PM (#11412489)
Frankly, this is a very good example why I inevitably give up on using Debian.

It is not the software writers' fault that your distro can't be arsed to keep its package system up-to-date.

Even the unstable branch is routinely multiple versions behind on software.

The idea of linking end-user software versioning to the operating system version itself was always a dumb idea, but has become even more absurd over time. No other operating system but Linux (and possibly some BSDs) does this to the extent that the distro model does.

I'm not limited to awkward work-around manual install methods just because the version of Notepad++ linked to Windows 8.1 hasn't been updated since it was released. The whole scenario is absurd.

Yes, package repos are nice, but not when it means I'm perpetually multiple versions behind on common software just because a handful of nerds are trying to do the job of Github and Sourceforge combined, instead of just building an easier method of installing and updating third-party software.

Re:“This version of XScreenSaver is very old. Please upgrade” by sanbor on Saturday April 02, 2016 @02:11PM (#11412541)
Maybe distros like Debian are more stability/security oriented than feature oriented. New version of software often contain new features that it may introduce new bugs.

Debian guarantees that when you install their distro things are going to work and are kind of secure. The tradeoff of having all the software in the distro being checked by people that have tested and checked that everything works well and smooth it's going delay updating the packages.

But the idea of having a distro it's something that offers you that. That someone took the work of packaging and testing, so you can install things and everything works.

I think that if more software would be offered statically compiled with all the libraries (like many apps in OSX), then we would be able to try the latest release of Gimp when it's released, instead of having to waste time trying to compile from source or waiting for being included in the next release of the distro.

Re:“This version of XScreenSaver is very old. Please upgrade” by haddr on Saturday April 02, 2016 @02:18PM (#11412579)
Spot on. I was always puzzled why some software just can't come statically compiled. I suppose not all apps can be distributed like that, but most of them can.

I can't even remember how many hours I wasted on trying to compile a new version of some program, just to learn the infinite tree of dependencies, newer versions of existing libraries required, build prefixes tweaking etc... Most of that time could have been saved.

Re:“This version of XScreenSaver is very old. Please upgrade” by binarycrusader on Saturday April 02, 2016 @02:55PM (#11412763)
Because statically linking everything has several negative consequences:

  * increased storage space
  * increased memory usage
  * increased downtime for updates (since more files have
    to be updated)
  * increased bandwidth usage (total size of download
    for update)
  * potentially increased security risks
In short, trading off all of the above to simply avoid proper release engineering and simplified dependency management is the wrong answer.

Our systems need less downtime and better security; not the opposite, which is what static linking brings.

That's why Solaris, as an example, does not provide static archives for almost any of the components that are provided, especially libc.

Re:“This version of XScreenSaver is very old. Please upgrade” by gens on Saturday April 02, 2016 @05:10PM (#11413454)
statically linking to properly(!) made libraries will only maybe increase storage space

it will decrease memory usage (as most loaders load the whole library, even when just one function is used)

more things to upgrade, yes

more bandwidth, yes (not much if one uses binary diffs)

potentially increased security risks, yes. although shared libraries are bigger security risks

i made an acc just to reply to this. why do people never understand static linking ?

Re:“This version of XScreenSaver is very old. Please upgrade” by binarycrusader on Saturday April 02, 2016 @08:12PM (#11414219)
statically linking to properly(!) made libraries will only maybe increase storage space it will decrease memory usage (as most loaders load the whole library, even when just one function is used)

Most OS linkers already do efficient loading of only the relevant portions of a shared library since they typically mmap the library file.

In aggregate, static linking the same dependency for multiple programs will increase memory usage as well despite your assertions to the contrary since the pages will not generally be shared (yes, I'm aware some OS have page dedup or compression, etc., but I'm talking about the general case here).

more things to upgrade, yes more bandwidth, yes (not much if one uses binary diffs)

A binary diff of 100 programs all linking to the same library will still be larger than the diffs for a single library.

In addition, updating 100 binaries, even with diffs still takes longer than uprating a single library, which means increased downtime during system updates.

potentially increased security risks, yes. although shared libraries are bigger security risks

Code is code; how is shared linking a greater risk? Have any data to back that up?

i made an acc just to reply to this. why do people never understand static linking ?

I understand static linking quite well, since my day job is part of a commercial OS team that coincidentally pioneered dynamic linking technology in UNIX.

So let's not base our arguments on assumptions about knowledge just because we disagree.

Re:“This version of XScreenSaver is very old. Please upgrade” by gens on Tuesday April 05, 2016 @08:18PM (#11435685)
>Most OS linkers already do efficient loading of only the relevant portions of a shared library since they typically mmap the library file.

a page is 4kB (on x86 at least). a function is typically, what, 60 bytes ? 120 maybe ? 240 ? some functions use other functions (fopen()->_open() in libc) so you can have more then two pages

maybe you are thinking about swapping (or not even lazy loading in the block layer) ? code has to be in RAM, everything else is insecure

>In aggregate, static linking the same dependency for multiple programs will increase memory usage as well despite your assertions to the contrary since the pages will not generally be shared (yes, I'm aware some OS have page dedup or compression, etc., but I'm talking about the general case here).

not pages, functions (and/or variable objects). when you make a .la on unices you are making a ar(1) archive out of .o object files. when the linker is linking the final binary it opens that .la archive and pulls out the relevant .o objects

so "statically linking to properly(!) made libraries" will reduce overall memory usage, unless a lot of programs use that (small) library (rarely the case)

OSX linker does the right thing with their libc. in that out of the many optimized memcpy()'s it will only load the one that is fast on the particular cpu

GNU linker loads them all

>Code is code; how is shared linking a greater risk? Have any data to back that up?

data to back it up ? do you have any data to back up anything you said ?

LD_PRELOAD can be used to replace functions and the user/admin would not notice it. while the only security flaw with static linking is an administrative mistake

>I understand static linking quite well, since my day job is part of a commercial OS team that coincidentally pioneered dynamic linking technology in UNIX.

>So let's not base our arguments on assumptions about knowledge just because we disagree.

so go ask them about it

Re:“This version of XScreenSaver is very old. Please upgrade” by sanbor on Saturday April 02, 2016 @03:30PM (#11412962)
Thank you for enumerating those downsides. Clearly I'd avoid statically linked software if I would have the option to use `apt-get install` to get that software.

But in the situation that a new version of the software is released, and I think it would benefit me right now, I'd trade all those downsides for being able to use that software right now than waiting to be included in my distro (like it happened to me with Gimp some years ago).

I'm plenty of memory, storage and bandwidth but not so much of time to compile it by hand.

I have to admit that this is just a workaround while we find a better software release and dependency management system.

Re:“This version of XScreenSaver is very old. Please upgrade” by binarycrusader on Saturday April 02, 2016 @03:59PM (#11413108)
But in the situation that a new version of the software is released, and I think it would benefit me right now, I'd trade all those downsides for being able to use that software right now than waiting to be included in my distro (like it happened to me with Gimp some years ago).

I don't understand what static linking vs. dynamic linking has to do with waiting for gimp to be included in your distro?

I'm plenty of memory, storage and bandwidth but not so much of time to compile it by hand.

No one is suggesting you have to do that, but someone will have to do that, and it does require resources (time, people, hardware, etc.).

I have to admit that this is just a workaround while we find a better software release and dependency management system.

If by system, you're referring to technology, then I disagree.

In other words, the technological constraints of today's package management systems are not the primary issue, rather it is how the software itself is being developed and managed and the available resources to do so.

Ultimately though, most of this all comes about because the underlying systems that applications depend upon in a typical Linux distribution are not properly release engineered. They don't properly version the shared libraries, they don't carefully avoid incompatible changes in interfaces, and they don't have sufficient regression testing.

So to me, the right answer is to fix the root of the problem, not paper over it by pretending there isn't one by essentially embedding copies of every dependency into an application.

In short, start encouraging developers to reduce their dependency chains, properly release manage their software, ensure that core system components offer stable interfaces, and provide timely updates.

Re:“This version of XScreenSaver is very old. Please upgrade” by clevernickname on Saturday April 02, 2016 @08:22PM (#11414250)
A tradeoff that few consider is that dynamic linking can lessen the motivation of library developers to reduce code bloat and complex dependency trees. Who cares about 20 megs here or there if there is only one shared library instance? Who cares about bringing in a tree of 50 dependencies for this console program if the user probably has them installed already? And thus we end up with the modern Linux desktop, where nearly everything depends on a gigabyte or more of dependencies.

Whereas with static linking, you can directly see the effect that any library you use has on the binary size. This encourages library and application devs alike to be more judicious with their dependencies.

Re:“This version of XScreenSaver is very old. Please upgrade” by binarycrusader on Saturday April 02, 2016 @09:56PM (#11414562)
A tradeoff that few consider is that dynamic linking can lessen the motivation of library developers to reduce code bloat and complex dependency trees.

Architecting an operating system and its packages as a psychological forcing function to improve software development is not a worthwhile tradeoff for the efficiency, security, or reliability of a system.

Who cares about 20 megs here or there if there is only one shared library instance? Who cares about bringing in a tree of 50 dependencies for this console program if the user probably has them installed already? And thus we end up with the modern Linux desktop, where nearly everything depends on a gigabyte or more of dependencies.

I find it amusing that someone is arguing for static linking as a way to make it obvious how bloated programs are, since usually the counter-argument to dynamic linking from many is "who cares about disk space!".

There are plenty of programs that are distributed essentially statically-linked today, that still have 50 dependencies or more -- there is no data that I am aware of to support the idea that dynamic vs. static linking would encourage developers to reduce their dependencies.

Whereas with static linking, you can directly see the effect that any library you use has on the binary size. This encourages library and application devs alike to be more judicious with their dependencies.

This is a dubious argument at best; you can still easily see the size of your program today even if it's dynamically linked simply by looking at top, or by using the appropriate developer tools.

I can empathize with the frustrations that some feel in dealing with some operating systems and applications, but it is not due to a technological issue -- it is due to cultural and process issues present not only in the development of the software they rely on but in the distributions that provide the software themselves.

"papering over" those issues by static linking only makes the problem worse -- not better. This a cultural and process issue that cannot be addressed solely through technological means.

Also, I want to be clear that I am not linking against static linking completely; I'm arguing for dynamic linking (or more generally, shared objects) for those dependencies shared between a sufficient number of components that have sufficiently stable interfaces to share them.

By all means, if there is a component with a sufficiently unstable interface, then by definition, it is not appropriate for sharing between components, and at that point whether you statically or dynamically-link the dependency is moot, since you can have private dynamically-linked dependencies just as easily statically-linking them into binaries.

Re:“This version of XScreenSaver is very old. Please upgrade” by rkeene2 on Saturday April 02, 2016 @04:04PM (#11413133)
AppFS ( http://appfs.rkeene.org/ ) aims to solve the packaging problem in a way that is very similar to this line of thinking.

Software is just files on disk, rather than statically linking (and this duplicating) to libraries we can use references to the libraries (dynamic linking), the issue is the user has to install the software and its dependencies then.

AppFS solves this by not having an install step. All files in all AppFS packages in all the world show up in the filesystem if you look for them. They are then cached to disk if you try to use them.

So if you had a package X that depended on library Y you simply run the binary you want from X and any libraries from Y will get used.

Since AppFS is a global namespace using HTTP, it has very similar semantics to the WWW, just with symlinks or ELF NEEDED entries instead of hyperlinks.

So you, as a developer can publish software that depends on the software another developer publishes, and the user can fetch the software directly from you without there ever being an install step.

Re:“This version of XScreenSaver is very old. Please upgrade” by jhkaghjkga on Saturday April 02, 2016 @02:26PM (#11412628)
Because any (possibly security-relevant) update to a library would mean that all software linking it statically has to be rebuilt.

In reality that of course doesn't happen, so programs linking statically or including their own versions of shared libraries never get security updates for the included libraries.

Re:“This version of XScreenSaver is very old. Please upgrade” by digi_owl on Saturday April 02, 2016 @02:31PM (#11412649)
If you want the perfect example of that problem, look to Windows.

A couple of years back Microsoft discovered some kind of issue with their redistributable dlls.

They patched Office etc, but could only offer a scanner that would check each and every dll to see if it was of a vulnerable version. And asked users to pester third party software providers for updates if the scanner found any.

Re:“This version of XScreenSaver is very old. Please upgrade” by sanbor on Saturday April 02, 2016 @02:49PM (#11412732)
I wouldn't move from a package system to an "everything has to be statically compiled" system. But it would be a nice option to have when most of the software in your distro it's ok but you want to run some app without upgrading your whole distro/OS.
Re:“This version of XScreenSaver is very old. Please upgrade” by haddr on Saturday April 02, 2016 @02:51PM (#11412742)
In the same way as you upgrade library you can just upgrade your software...
Re:“This version of XScreenSaver is very old. Please upgrade” by Ologn on Saturday April 02, 2016 @02:54PM (#11412759)
> Maybe distros like Debian are more stability/security oriented than feature oriented. New version of software often contain new features that it may introduce new bugs.

New versions of software also fix old stability and security bugs.

If software became more secure with age, then the older your version of gnome screensaver, the more secure it would be ( https://www.jwz.org/blog/2015/04/i-told-you-so-again/ ).

Re:“This version of XScreenSaver is very old. Please upgrade” by sanbor on Saturday April 02, 2016 @03:23PM (#11412918)
> New versions of software also fix old stability and security bugs.

Sometimes new versions of software fix bugs, sometimes they improve stability, sometimes they introduce new bugs, sometimes they decrease the performance, sometimes they become bloatware, sometimes several of this things happen in any combination.

Re:“This version of XScreenSaver is very old. Please upgrade” by cmsj on Sunday April 03, 2016 @02:10PM (#11416972)
Debian doesn't guarantee you anything. "stable" isn't bug free, what you're getting is a lack of newness. "stale" would be a better choice of word. It's not necessarily better, it's just not changing.
Re:“This version of XScreenSaver is very old. Please upgrade” by dfc on Saturday April 02, 2016 @03:03PM (#11412807)

  > No other operating system but Linux (and possibly some 
  > BSDs) does this to the extent that the distro model does.
I am not sure this is the case. What other operating systems except Linux and the BSDs offer users a choice for which XYZ should be used? Is the window manager functionality in Windows Vista not provided by a specific version of that software component? I think the version of OpenSSH in OSX is tied to the version of OSX? You don't recognize this in non-Linux+BSDs because you don't have a choice, you use whatever version of XYZ comes with your OS.

  > Even the unstable branch is routinely multiple versions 
  > behind on software.
Respectfully, I think this is a bit of an exaggeration. Maybe this is true for esoteric packages but I am curious to hear why you think this. Unstable has the latest Xscreensaver at the moment. There was a one day lag between the release of 5.34 and a packaged version for unstable.
Re:“This version of XScreenSaver is very old. Please upgrade” by jarcane on Sunday April 03, 2016 @05:00AM (#11415458)
At the moment, the Racket package in the current stable release of Debian is using 6.1. That is an 8 month old package. Even unstable is only on on 6.3, which itself is almost 6 months old. The last time I used Debian was at most a year ago, and at that time the stable package for Racket was still 5.3, which came out in 2013.

And this same pattern repeated itself so often where programming tools were concerned that I eventually just gave up on using apt-get for developing and would wind up manually installing most languages, and then sometimes having to fight with conflicts because some package or other had already installed an out-of-date version, so now I either had to overwrite the package-installed version and risk breaking something, or just run it locally from some directory in /home.

Contrast to Windows or OS X, where all I have to do to run Racket is go to the website, download the latest version, and possibly run an automated installer. On OS X, I just have to drag one icon onto another icon, and if the app's been set up right this even handles my command-line paths for me.

Seriously, this is 2016. We have the internet now. We do not need to load every piece of software one would ever need onto a CD anymore like it's 1994 and the only reliable source of Linux software is Walnut Creek CD-ROMs.

It is a perfectly reasonable expected use case that someone desiring a piece of software should be able to just go and download the most recent version, install it, and should need arise, uninstall it just as cleanly.

Nowhere else is that process as broken as it is on Linux, especially under Debian's hopelessly slow update process.

Re:“This version of XScreenSaver is very old. Please upgrade” by dfc on Sunday April 03, 2016 @03:21PM (#11417238)
Correct racket version 6.3 is 6 months old. But 6.4 came out two months ago, that seems to be the relevant age statistic. That seems a little disingenuous of you?

The software distribution and management scheme you are advocating for sounds like a security nightmare. Administrators are already bad enough with applying vendor updates. Can you imagine what things would be like if administrators had to track all of the different upstream security announcements for everything they installed?

Re:“This version of XScreenSaver is very old. Please upgrade” by jarcane on Sunday April 03, 2016 @05:06PM (#11417734)
1) No, it's not disingenuous, those are the package versions included in the present Debian branches. Yes, 6.4 is two months old. So why the fuck is it still not even included in unstable, and why do I need a PPA for it on Ubuntu?

2) I am describing how literally every other major OS works. That is how Windows works. That is how OS X works. There is nothing impractical or intractable about this problem. Mainstream software has been solving it for decades.

Re:“This version of XScreenSaver is very old. Please upgrade” by Ologn on Saturday April 02, 2016 @02:40PM (#11412690)
> It is not the software writers' fault that your distro can't be arsed to keep its package system up-to-date.

That's it. Ubuntu releases every six months, it's not upstream's problem that an up-to-date version of your stable distro is using the program released in September 2014 (17 months ago). As XScreenSaver 5.32 was released in November 2014 and Debian stable was released in April 2015, you have to wonder why in those five months why it was not 5.32 which was released, or even 5.31, but 5.30 which was released seven months before.

Does anyone remember July 2002 to June 2005, almost three years between Debian releases? I do. You can point figures for why that happened, but it makes little sense to point them at the upstreams who make your distribution possible.

At the end of the day, the message jwz put in the code is crystal clear - if you are unhappy with the message and don't plan to keep your distro somewhat up to date, he'd prefer you just rip out xscreensaver from the distro and use an alternative. It doesn't make sense to compare him to a terrorist setting bombs as someone did in the thread.

It goes back to the initial reply. For all the gnashing of teeth and finger-pointing and name-calling and effort to deal with this and other issues due to old packages - if Debian channeled all of that energy and effort into a shorter, saner release cycle, it would be much more beneficial to everyone. If stable Debian was as current as the last release of Ubuntu or Fedora or OpenSuse etc., this discussion would have never taken place.

P.S. One good reason to download XScreenSaver 5.34 is the additional Android functionality. XScreenSaver 5.35 will possibly have much-expanded Android functionality when it is released (or if not, then 5.36 or one soon after). If you have Android Studio and an Android device (or emulator), compile it and give it a whirl. Once it gets into shape more for users, an APK will probably be put up, and possibly even a Google Play app. So if you're an Android developer, give it a whirl. Send an e-mail to the folks in the android/README with any bugs, questions, comments, patches etc. Probably best to e-mail first before doing the work on major patches. Give it a spin.

Re:“This version of XScreenSaver is very old. Please upgrade” by icebraining on Saturday April 02, 2016 @03:48PM (#11413046)
if Debian channeled all of that energy and effort into a shorter, saner release cycle, it would be much more beneficial to everyone.

The whole point of Stable is that it doesn't change often. As a Debian user, I don't want to upgrade my servers every six months. I'm fine with stale packages (with backported security patches). There's a reason why Ubuntu, despite its standard release cycle, also maintains LTS releases for both servers and desktops for five years; but adopting that approach that requires much more effort than just switching the cycle as you're suggesting.

Also, another advantage of longer cycles is that Testing has more time to mature, which is why a Stable release is - in my experience - much more stable than an Ubuntu release.

So, yeah, I'm fine with having to compile XScreensaver myself. But I choose Debian because it's not like Ubuntu or Fedora.

Re:“This version of XScreenSaver is very old. Please upgrade” by qplex on Saturday April 02, 2016 @02:16PM (#11412570)
It's called 'unstable' for a reason. New stuff breaks. Often.
Re:“This version of XScreenSaver is very old. Please upgrade” by feld on Saturday April 02, 2016 @03:53PM (#11413076)
This is the worst attitude to have about software
Re:“This version of XScreenSaver is very old. Please upgrade” by icebraining on Saturday April 02, 2016 @04:01PM (#11413116)
What, having beta versions?
Re:“This version of XScreenSaver is very old. Please upgrade” by feld on Sunday April 03, 2016 @10:31PM (#11419026)
That any new release is not to be trusted.