Main Menu

Tip jar

If you like CaB and wish to support it, you can use PayPal or KoFi. Thank you, and I hope you continue to enjoy the site - Neil.

Buy Me a Coffee at ko-fi.com

Support CaB

Recent

Welcome to Cook'd and Bomb'd. Please login or sign up.

April 28, 2024, 07:59:52 AM

Login with username, password and session length

Windows 10

Started by Pseudopath, September 30, 2014, 06:59:27 PM

Previous topic - Next topic

BPFHAY

An ideal but unlikely solution would be being able to query for characteristics rather than labels. But not happening.

MojoJojo

I believe that's what semver tries to do, although I can't see how it works alongside a rigorous testing regime.

BPFHAY

The summary makes it look like it's still based on labeling though.

Blumf

It can't really work with something as complex as an operating system. You have misc features added/enabled but only to specific variants and so on (e.g. XP Home vs Professional, Win8 vs Win8 RT)

Certainly what should happen with libs though (although even then, you can turn features on/off in libraries builds too, regardless of version)

BPFHAY

It's not practical, but it's possible. I don't know how the existence of features in certain versions of an OS is an argument for its impossibility. That's just restating the reason for such a system to exist.

Zetetic


Blumf

Quote from: BPFHAY on October 02, 2014, 11:03:35 PM
It's not practical, but it's possible. I don't know how the existence of features in certain versions of an OS is an argument for its impossibility. That's just restating the reason for such a system to exist.

It's not really possible, unless you restrict what features are withheld in particular ways, something that MS doesn't.

Take the XP (5.1) Home/Pro split, MS continued that through to Vista (6.0), how would they be able to convey the lack of features for the Home versions? Say they called XP Home 5.1.0[nb]Yep, this isn't the SemVer spec[/nb] and XP Pro 5.1.1, but then Vista Home Basic is lower featured than Vista Home Premium (closest to XP Home), is lower/differently featured than Vista Business (XP Pro equiv.) All of Vista's versions are 6.0 so above 5.1, and if you tried something like 5.1.0 for XP Home and 5.1.1 for XP Pro you'd be lost with where Vista Home Basic fits in (6.0.-1?).

All that ignore that fact that some features exist on Home that don't on Business too.

The simple fact is with entire OS's there isn't a straight forward progression of features that can be covered by a simple, single version number scheme. You have to start polling for individual feature versions (which does happen, a lot of apps check the Common Controls DLL's version for example), where the SemVer scheme can work.

BPFHAY

I don't think you're following me, because you're agreeing with me at length. You can't do this based on labels/version numbers. if (someComplexVersionString) {doSomething();} doesn't work. if (queryCharacteristic()) {doSomething();} does.

Quote from: Blumf on October 03, 2014, 12:18:36 AM
The simple fact is with entire OS's there isn't a straight forward progression of features that can be covered by a simple, single version number scheme. You have to start polling for individual feature versions

Quote from: BPFHAY on October 02, 2014, 07:45:17 PM
An ideal but unlikely solution would be being able to query for characteristics rather than labels. But not happening.

Zetetic

I thought that was basically BPFHAY's point about "characteristics": granularity.

And once you've separated out functionality into reasonably narrow interfaces (or features, or characteristics, or capabilities), then you still need someway of conveying backwards-compatible or breaking changes - either by some kind of meaningful versioning or by locking the interface permanently on every release[nb]Leading to stuff like 'mysql_real_escape_string', I guess.[/nb].

BPFHAY

Microsoft's COM did something vaguely similar, and we all know how well-loved that was.

I guess it shows that it's a problem that isn't really fixed in the code, but in boring testing and regression processes that remind me why I will refuse to work as an "enterprise" developer or whatever they call people who write boring software.

Blumf

Then I'm not sure what BPFHAY's reply to me was for. I said a single version ID for an entire OS can't cover all variants, he said it was possible (which is true, but impractical)

Blumf

Quote from: BPFHAY on October 03, 2014, 12:29:14 AM
Microsoft's COM did something vaguely similar, and we all know how well-loved that was.

It's kinda still there, check out Manifests (and make a depressed sigh)

Zetetic

Quote from: BPFHAY on October 03, 2014, 12:29:14 AM
Microsoft's COM did something vaguely similar
Similar to what?

Blumf

Versioning interfaces

Zetetic

#44
Right if I understand it correctly, COM versioning doesn't let you discriminate between "I changed an existing part of the interface" and "I extended the interface in a backwards compatible manner".

It's vaguely similar in the sense that versioning has a specific meaning (with, again if I understand correctly, specific consequences when components try to talk to each other), but it's significantly dissimilar because it's irritatingly inexpressive to the point where it's useless for the sort of questions you'd be trying to answer when faced with a new release.

Edit: But, yes, it is all tied to "boring testing and regression processes". I can't really get away from that.

Blumf

I think a large part of them problem is the monolithic nature of Windows. A lot of developers got into the habit of assuming a fixed feature-set for each version (or worse, marketing name) of the OS. Understandable when it kinda works most of the time (and you can just tell the user they need to be on Windows N or better)

In the *nix world, where the OS is much more modular (and largely source code distributed) you tend to see software developed to work through checking each feature individually (good old './configure'). As a result, you don't tend to have the same problems with version conflicts (except when your system doesn't have the latest version of lib_depends_on_100_other_libs.so). You also see a neater library versioning without the need for brittle COM interfaces or ugly Manifests thanks to file system sym-links (something Windows does have, but couldn't use whilst most installs were on FAT partitions, and now it's too late)

$ ls -l /usr/lib/libsexy.so.2*
lrwxrwxrwx 1 root root    16 Jun 19 16:51 /usr/lib/libsexy.so.2 -> libsexy.so.2.0.4
-rw-r--r-- 1 root root 69392 Dec 18  2013 /usr/lib/libsexy.so.2.0.4

How easy is that! No need for sodding GUIDs or snaffled away whatever.manifest files.

Ultimately though, yeah, it's down to testing, which is practically impossible to do thoroughly. Very much a hard problem.

BPFHAY

I forget my point about COM, probably some nonsense to do with querying the existence of features.

Look at this shit: https://searchcode.com/?q=if%28version%2Cstartswith%28%22windows+9%22%29

Blumf

Hum... looks like it's Java's fault for not providing a decent OS detection call.

Of course, Java was supposed to hide all that OS stuff from the dev, so why would they? Except that's not really been true, people call OS functions and binaries from Java all the time. So why haven't they provided something better for checking? A quick look suggests 'os.name' is the best they offer as standard.

What are the chances that MS will finally ditch the Windows license for home versions as a profit model and open up the source code? Our house is entirely a Windows free environment at the moment: PC, laptop and NAS box all running various installs of Linux/FreeBSD.

Quote from: Too Many Cochranes on October 04, 2014, 03:46:40 AM
What are the chances that MS will finally ditch the Windows license for home versions as a profit model and open up the source code? Our house is entirely a Windows free environment at the moment: PC, laptop and NAS box all running various installs of Linux/FreeBSD.

The first part, likely, the second part never. Windows 8 upgrade price was almost peppercorn given the cost of previous versions, and given the rampant piracy of the software it would be in their best interest to keep that scheme going. Not to mention it competes directly with Apple that way. How much is an OS X upgrade usually, about £25? Windows should be no more than that.

biggytitbo

In javascript it's best practise to feature detect rather than use the useragent, but unfortunately in real world use this often proves inadequate due to features been improperly implemented in different browsers. In the end you have no choice but to sniff for iOS, android, internet explorer etc.

Blumf

Quote from: Too Many Cochranes on October 04, 2014, 03:46:40 AM
What are the chances that MS will finally ditch the Windows license for home versions as a profit model and open up the source code?

I don't think they could even if they wanted to.

The cost thing would almost certainly drag them into legal issues with various governments.

The source code; I suspect there'll be a lot that's locked down under various licensing deals with third parties and patents, it'll be far more ratty than MS would want to freely admit, and the corporate politics trying to get to that stage would be a nightmare.

Jamie Oliver is fat

Quote from: Too Many Cochranes on October 04, 2014, 03:46:40 AM
What are the chances that MS will finally ditch the Windows license for home versions as a profit model and open up the source code? Our house is entirely a Windows free environment at the moment: PC, laptop and NAS box all running various installs of Linux/FreeBSD.

I hear it's possible to power a home network of Linux devices on smugness alone!

The point I was making is that Windows can be irrelevant for the home user nowadays; with some decent free alternatives. Therefore would it be a prudent move for MS to provide free home user software?  So I own a computer and a laptop? What a smug tosser!

Anyway, I'll not derail the thread any more.

Jamie Oliver is fat

i was just joking babez

xx