Can you explain why you care about the physical encoding of filenames (UTF-8 vs UTF-16), so long as it's Unicode?
UTF-8 is a superset of UTF-16, in that the byte sequence can have ERRORS. What is needed is a well-defined conversion INCLUDING ERRORS from UTF-8 to the UTF-16 that Windows uses, perhaps programs should call this, but it would be trivial for it to do it EVERY TIME when using the older 'mb' or 'a' API to the filesystem, and thus remove a huge reason i18n does not work (because programs use about a thousand different converters right now and the result is that only ASCII filenames work). The fact that you actually think the physical encoding of filenames does not matter proves you have never worked with this and do not know what you are talking about.
And why do you care about case sensitivity of filenames?
Because it is really stupid that there is this enormous complexity in the algorithm to determine if two filenames will collide. Windows is supposed to be all GUI-centric, and in the GUI users CLICK ON FILES. They could not care less about case insensitivity, probably far less than users of command shells do, and so it is idiotic that you continue with this. Also despite all your claims about being politically-correct with UTF-16 and all that, the case conversions show an extreme bias toward English as they only reliably convert latin letters.
On a side note, OS X uses UTF-16 for filename encoding.
BZZT! WRONG! It uses UTF-8. Now how am I supposed to believe anything you say.
That said, SUA (the new name for SFU) is native POSIX support. It does that by completely ditching Win32 subsystem, and using a POSIX subsystem implemented directly on top of NT kernel (unlike Cygwin, which tries to implement POSIX on top of Win32 - which is very hard due to many mismatches).
This sounds suspiciously like the earlier "Posix subsystem" on NT that was purposely designed so that nobody would use it but they could tick off the "POSIX compatibility" check mark.
Basic question on SUA: can the Posix API open EVERY file on the system, no matter what it is named? And is the name something obvious (the UTF-8 version of the 16-bit filename is the only possible answer here, so don't lie). Is it possible to copy a filename from a Windows app, paste it into the Posix app, and it opens the same file every single time, with minimal direct conversion during the paste that does not involve looking for the file on the disk? How about the other direction?
If not, then this is like the subsystem and is designed so they can check things off while actively discouraging interoperability.
Then again, there are smart people at Microsoft, some of them with a conscience, so I can believe it is possible that they did this right.
I'm not saying anything is wrong with the BSD, just that I don't see how it (or the GPL or any other license) protects against patent claims.
If somebody is going to file a patent on an idea they stole, they certainly are not going to point out where they got the idea. So nobody will see that it was originally BSD (or public domain, or whatever). Since they don't see it, it seems unlikely the license will matter.
Open source including BSD, and public domain may help some because there may be good proof that the idea existed before the attempt to patent it was made.
BSD: That's as free as freedom gets, surpassing even Public Domain, which is at risk for being copyrighted or even patented by anyone who files an application.
I'm sorry but I don't see how BSD prevents somebody from doing this more than Public Domain does. Somebody can file a patent on anything and it really does not matter what license the original thing has.
Same here, neither click works on the links. It now seems consistent that the clicks do nothing. That is a slight improvement over a week ago where the clicks would scroll back to the first comment, making it difficult to find the link I was interested in again! Right-mouse and picking "open in a new tab" on the menu always worked however.
Really this is very bad performance by Slashdot.
Oh yea it appears I can't check "Post Anonymously" either.
You may be right that there won't be a demand for faster strings to replace these.
I am already using const reference for all arguments. The problem is that a lot of code needs to store a copy of the string into an object (for instance a "set the name of this object" method. We were certainly relying on reference counting to make this fast. Thinking more about this it would be fairly easy to replace it with some other objects we are using that are wrappers around std::string (in particular we use hash tables for all string keys and the object in the hash table is a pointer to a std::string, but we know the keys are equal if these pointers are equal). If such wrappers are easy to make without either making it difficult or unreasonable overhead to interact with code expecting std::string, than this would work.
I agree there should be access to the code units, but even this could be done with iterators. You should be able to iterate UTF-8, UTF-16, and UTF-32 code units out of a string, no matter what the underlying storage is (though I very much recommend UTF-8 as that is the only storage that can preserve all byte sequences and most outside data is bytes no matter how much you wish it was magically limited to valid UTF-8).
I would have preferred if they just said that operator[] returns a const reference (and the iterators are const only as well). This would fix the problems with the reference counting. It would also stop programmers from trying to replace characters in strings, which is very primitive practice that is preventing modern use of multibyte encodings.
I am afraid what is going to happen if they continue with this plan is that libraries are going to start making their own string replacements, like the situation was 10 years ago. We are still stuck with QString in Qt and a bunch of other remains of this...
If somebody does replace string I would like to see it do this:
1. copy of string is really fast.
2. No integer index. The only access is by forward iterators, and there are different iterators and an ability to define new ones. This will allow iterators for different types of Unicode transformations, and to handle errors in UTF-8 and all kinds of other parsing operations.
3. Construction from a C quoted string constant is really really fast. This may require compiler support, but the basic idea is for it to know that a pointer points at a C quoted string constant and thus not reference count or free it.
Actually there would be no bool, any sensible implementation would use a value such as size_t(-1) to indicate the "unknown size", so the overhead is only sizeof(size_type).
Anyway, in my opinion the strongest argument in favor of O(1) size() is that all other containers are O(1). Thus generic code can reliably use it regardless of type of container.
That's interesting, but it would seem to be impossible to rely on for generic code.
The fact that programmers call size()==0 rather than empty() is just something they need to fix themselves.
Code like std::vector::reserve(list.size()) is useful and I suspect the only argument for making size() O(1).
Every other use I can think of involves comparing size() to and index number, and I cannot figure out a good use of an index number in a list that is not itself O(N). Thus I don't see a fast size() as being of any use for generic code, as any use of it would then have to do a step that is slow on a list anyway.
A converse problem is that in gcc std::string(const std::string&) is fast (because they are pointers to reference-counted data) while this is slow in VC++.
Because, as I've said 4 times now, the people agree to do this to AVOID a lawsuit. There are also several examples where parties agreed to cease distributing the infringing content. So much for being "forced to release their source code".
Yes you need to redistribute your code in order to comply with the GPL license. But it is a license that says "I am going to allow you to violate copyright laws on this material if you do this special thing".
If you don't follow the license, you are VIOLATING COPYRIGHT LAWS. You are liable for monetary fines and cease and desist orders. I challenge you to point out the part of US (or any country's) copyright laws that says "oh you can get out of your infringement for free by redistributing your source code".
This really is not that hard. You are NEVER EVER EVER "forced to release your source code". This is the biggest piece of FUD ever to come out of Redmond. I could write a license that says you are required to give me your first-born son if you want to violate the copyright, and if you redistribute without doing that then you are liable for copyright infringement. But you certainly will not be forced to give me your first-born son! Saying so is the most idiotic thing ever.
Violating the GPL means you are doing copyright infringement. It might be unclear whether or not you are violating the GPL, but if you are you are doing copyright infringement. Read up on it someday. Obeying a license after the fact does not get you out of the infringement, so there is no way what soever that disobeying the GPL "forces you to release your source code". You are in a civil liability suit.
It is possible to agree with the copyright holders to avoid the suit. Maybe you agree to release your source code. Maybe you agree to wash their floors for a year. So should I say "using GPL code forces you to wash the floors of the copyright holders"? No, that is nonsense. But saying "it forces you to release your source code" actually is exactly the same thing.
FUD! The developer does not "lose the rights to the source code to her million dollar game".
If this bull (which is what it is) about the header files was true, the developer would be guilty of copyright infringement. The only legal recourse is a monetary damages, paid to the copyright holder, and cease and desist in distributing the infringing content. In no way whatsoever, despite the incessant FUD from Microsoft that it happens, can anybody ever be "forced to release their code". Anybody who says anything like this is liar and their motives are pretty questionable.
It is possible for a copyright violator to agree to something in order to avoid monetary damages. However both parties have to agree on it. The copyright violator cannot just release the source code and somehow that is a "get out of jail free" card to avoid damages. It is meaningless, they are still liable for the previous copyright violation. Otherwise it would be trivial to violate the GPL by just waiting until the code is worthless and then releasing it.
I have noticed that there are no large planes at the flooded Sendai airport. Was there just none there, or did they get them all off the ground before the tsunami hit?
As the article explains, the water is moved closer to the earth's axis despite being at a higher altitude. The north pole, for instance, is zero distance from the axis.
This is due to the majority of reservoirs being further away from the equator than the majority of the water sources and thus water is being moved closer to the axis.
Melting land-based ice caps certainly would slow rotation, but this is because they are at the poles, not because they are higher up.
It is not clear why this approach is not tried more, by legitimate patents. For instance MPEG-LA could pretty much decimate the opposition to H264 by granting a royalty-free license to any software where the source is included (or any similar method they can think of where the purpose is to clearly make distribution of the codec with a Linux distribution possible).
It is possible they have thought of this, but would like it even better if RedHat or Canonical or somebody coughs up a ransom payment like this.
I think the engineers are smart enough to figure out how to make a solar power plant that keeps working even when some of the cells fail. Even though apparently you think it is impossible.
My technique in playing video games is to push all the buttons as fast as possible. Works best in the fighting games. I wonder if this technique can somehow be used by real-world athletes?
The price for *voice* data is about 10000 times less than for SMS data. It is being sent by the same radio to the same cell towers and has the same availability! In many cases the ratio is *infinite*. Me and my SO have a friends and family plan and can call each other for *free*, yet texting each other (which I suspect uses less data than the first 1/10 second of the phone call) costs 30 cents (15 cents for each phone)! Also somebody else texting me costs me 15 cents, yet if they called me it would not cost me anything (it may cost them more, however).
What I meant was that if someone bought a computer with Linux preinstalled, they would NOT wipe it and install Windows. For the same reason people who buy an Apple machine won't wipe it and install Windows.
OSX does not run WIndows software perfectly, in fact it is far worse than Linux. This does not seem to be stopping it. There is a belief that this is due to quality, but I suspect the majority of the reason is that only extreme geeks actually reinstall operating systems. OSX could be the worst thing in the world (I don't think it is btw) and if people bought the machines to get the cool apple logo and shiny case, they still would not reinstall.
I was wondering about this too. Getting rid of the close box was one of the earlier changes tried by window managers (wm2 for instance). Even 20 years ago most programs had a way to close them other than the close box. The only counter examples I can think of were trivial demo programs written without any toolkit but making them quit on a the user hitting Escape would require very little code added to the demo.
It does seem like the titlebar can be eliminated entirely. All operations could be done by the user clicking in "dead" areas of the application. If you click on the blank area in your control panel, you can move the window around, or if you are near enough to the edge you resize it (probably like most Linux WMs do now, you can in effect make the entire window dead area and draggable by holding down Alt or something). The maximize, minimize, and close have been removed. The text in the title bar is either useless or repeated inside the window somewhere. So the title bar is no longer needed.
This would also get rid of the annoying distinction between "maximized" and "full screen".
This is probably a troll, but you will find on Windows that you cannot use ctrl+c/v to cut and paste in the terminal. You use ctrl+shift+c/v. Amazingly enough, this is the EXACT SAME keys you use in most terminal emulators on Linux (the ones you seem to think require the context menu, without realizing that Windows has the exact same context menu in it's terminal!)
I also find it hilarious that you say "In windows ctrl-v or shift-ins is the universal way to copy/paste" and then later say "Linux paste is schizophrenic: ctrl-v, shift-ins". You then try to make Linux sound more confusing by adding "shift-ctrl-ins" (which exists on Windows) and the context menu paste (which exists on Windows in the same terminal emulator programs). You could at least have mentioned Emacs which uses different keys (but of course you can run Emacs on Windows and it has the SAME keys).
Indeed both Gnome and KDE and Windows allow you to drag maximized windows to another desktop, so his reason for the minimize button does not make sense.
You do have to remaximize it after dragging. On Windows 7 (and it sounds like on new Gnome) you do it by hitting it against the top of the screen, which is pretty easy since you are dragging the window anyway.
This would also place almost all embedded linux (ie routers and storage devices) in the same catagory as the Android phones. They don't have the GNU utilities and instead run busybox. This would be useful to remove a large class of devices that are not normally considered when asking how many users run Linux verses Windows (there is also embedded Windows but it seems that is mostly limited to ATM machines).
Some embedded boxes may be running a little GNU software, in particular glibc.
Also it is quite possible to remove all GNU software from Linux (using the BSD utilities instead) and make it run X, and the average person would consider that a "Linux machine".
So I think a better distinction is X/Linux, in that it uses the X window system.
An annoyance is that X may be replaced by Wayland, yet this should still count. X should just mean "window system".
Can you explain why you care about the physical encoding of filenames (UTF-8 vs UTF-16), so long as it's Unicode?
UTF-8 is a superset of UTF-16, in that the byte sequence can have ERRORS. What is needed is a well-defined conversion INCLUDING ERRORS from UTF-8 to the UTF-16 that Windows uses, perhaps programs should call this, but it would be trivial for it to do it EVERY TIME when using the older 'mb' or 'a' API to the filesystem, and thus remove a huge reason i18n does not work (because programs use about a thousand different converters right now and the result is that only ASCII filenames work). The fact that you actually think the physical encoding of filenames does not matter proves you have never worked with this and do not know what you are talking about.
And why do you care about case sensitivity of filenames?
Because it is really stupid that there is this enormous complexity in the algorithm to determine if two filenames will collide. Windows is supposed to be all GUI-centric, and in the GUI users CLICK ON FILES. They could not care less about case insensitivity, probably far less than users of command shells do, and so it is idiotic that you continue with this. Also despite all your claims about being politically-correct with UTF-16 and all that, the case conversions show an extreme bias toward English as they only reliably convert latin letters.
On a side note, OS X uses UTF-16 for filename encoding.
BZZT! WRONG! It uses UTF-8. Now how am I supposed to believe anything you say.
That said, SUA (the new name for SFU) is native POSIX support. It does that by completely ditching Win32 subsystem, and using a POSIX subsystem implemented directly on top of NT kernel (unlike Cygwin, which tries to implement POSIX on top of Win32 - which is very hard due to many mismatches).
This sounds suspiciously like the earlier "Posix subsystem" on NT that was purposely designed so that nobody would use it but they could tick off the "POSIX compatibility" check mark.
Basic question on SUA: can the Posix API open EVERY file on the system, no matter what it is named? And is the name something obvious (the UTF-8 version of the 16-bit filename is the only possible answer here, so don't lie). Is it possible to copy a filename from a Windows app, paste it into the Posix app, and it opens the same file every single time, with minimal direct conversion during the paste that does not involve looking for the file on the disk? How about the other direction?
If not, then this is like the subsystem and is designed so they can check things off while actively discouraging interoperability.
Then again, there are smart people at Microsoft, some of them with a conscience, so I can believe it is possible that they did this right.
I'm not saying anything is wrong with the BSD, just that I don't see how it (or the GPL or any other license) protects against patent claims.
If somebody is going to file a patent on an idea they stole, they certainly are not going to point out where they got the idea. So nobody will see that it was originally BSD (or public domain, or whatever). Since they don't see it, it seems unlikely the license will matter.
Open source including BSD, and public domain may help some because there may be good proof that the idea existed before the attempt to patent it was made.
BSD: That's as free as freedom gets, surpassing even Public Domain, which is at risk for being copyrighted or even patented by anyone who files an application.
I'm sorry but I don't see how BSD prevents somebody from doing this more than Public Domain does. Somebody can file a patent on anything and it really does not matter what license the original thing has.
The average person is incapable of determining if Britney Spears actually is dating a certain boyfriend, too.
Same here, neither click works on the links. It now seems consistent that the clicks do nothing. That is a slight improvement over a week ago where the clicks would scroll back to the first comment, making it difficult to find the link I was interested in again! Right-mouse and picking "open in a new tab" on the menu always worked however.
Really this is very bad performance by Slashdot.
Oh yea it appears I can't check "Post Anonymously" either.
You may be right that there won't be a demand for faster strings to replace these.
I am already using const reference for all arguments. The problem is that a lot of code needs to store a copy of the string into an object (for instance a "set the name of this object" method. We were certainly relying on reference counting to make this fast. Thinking more about this it would be fairly easy to replace it with some other objects we are using that are wrappers around std::string (in particular we use hash tables for all string keys and the object in the hash table is a pointer to a std::string, but we know the keys are equal if these pointers are equal). If such wrappers are easy to make without either making it difficult or unreasonable overhead to interact with code expecting std::string, than this would work.
I agree there should be access to the code units, but even this could be done with iterators. You should be able to iterate UTF-8, UTF-16, and UTF-32 code units out of a string, no matter what the underlying storage is (though I very much recommend UTF-8 as that is the only storage that can preserve all byte sequences and most outside data is bytes no matter how much you wish it was magically limited to valid UTF-8).
Yes I heard about C++0x wording.
I would have preferred if they just said that operator[] returns a const reference (and the iterators are const only as well). This would fix the problems with the reference counting. It would also stop programmers from trying to replace characters in strings, which is very primitive practice that is preventing modern use of multibyte encodings.
I am afraid what is going to happen if they continue with this plan is that libraries are going to start making their own string replacements, like the situation was 10 years ago. We are still stuck with QString in Qt and a bunch of other remains of this...
If somebody does replace string I would like to see it do this:
1. copy of string is really fast.
2. No integer index. The only access is by forward iterators, and there are different iterators and an ability to define new ones. This will allow iterators for different types of Unicode transformations, and to handle errors in UTF-8 and all kinds of other parsing operations.
3. Construction from a C quoted string constant is really really fast. This may require compiler support, but the basic idea is for it to know that a pointer points at a C quoted string constant and thus not reference count or free it.
Actually there would be no bool, any sensible implementation would use a value such as size_t(-1) to indicate the "unknown size", so the overhead is only sizeof(size_type).
Anyway, in my opinion the strongest argument in favor of O(1) size() is that all other containers are O(1). Thus generic code can reliably use it regardless of type of container.
That's interesting, but it would seem to be impossible to rely on for generic code.
The fact that programmers call size()==0 rather than empty() is just something they need to fix themselves.
Code like std::vector::reserve(list.size()) is useful and I suspect the only argument for making size() O(1).
Every other use I can think of involves comparing size() to and index number, and I cannot figure out a good use of an index number in a list that is not itself O(N). Thus I don't see a fast size() as being of any use for generic code, as any use of it would then have to do a step that is slow on a list anyway.
A converse problem is that in gcc std::string(const std::string&) is fast (because they are pointers to reference-counted data) while this is slow in VC++.
Because, as I've said 4 times now, the people agree to do this to AVOID a lawsuit. There are also several examples where parties agreed to cease distributing the infringing content. So much for being "forced to release their source code".
Yes you need to redistribute your code in order to comply with the GPL license. But it is a license that says "I am going to allow you to violate copyright laws on this material if you do this special thing".
If you don't follow the license, you are VIOLATING COPYRIGHT LAWS. You are liable for monetary fines and cease and desist orders. I challenge you to point out the part of US (or any country's) copyright laws that says "oh you can get out of your infringement for free by redistributing your source code".
This really is not that hard. You are NEVER EVER EVER "forced to release your source code". This is the biggest piece of FUD ever to come out of Redmond. I could write a license that says you are required to give me your first-born son if you want to violate the copyright, and if you redistribute without doing that then you are liable for copyright infringement. But you certainly will not be forced to give me your first-born son! Saying so is the most idiotic thing ever.
Violating the GPL means you are doing copyright infringement. It might be unclear whether or not you are violating the GPL, but if you are you are doing copyright infringement. Read up on it someday. Obeying a license after the fact does not get you out of the infringement, so there is no way what soever that disobeying the GPL "forces you to release your source code". You are in a civil liability suit.
It is possible to agree with the copyright holders to avoid the suit. Maybe you agree to release your source code. Maybe you agree to wash their floors for a year. So should I say "using GPL code forces you to wash the floors of the copyright holders"? No, that is nonsense. But saying "it forces you to release your source code" actually is exactly the same thing.
FUD! The developer does not "lose the rights to the source code to her million dollar game".
If this bull (which is what it is) about the header files was true, the developer would be guilty of copyright infringement. The only legal recourse is a monetary damages, paid to the copyright holder, and cease and desist in distributing the infringing content. In no way whatsoever, despite the incessant FUD from Microsoft that it happens, can anybody ever be "forced to release their code". Anybody who says anything like this is liar and their motives are pretty questionable.
It is possible for a copyright violator to agree to something in order to avoid monetary damages. However both parties have to agree on it. The copyright violator cannot just release the source code and somehow that is a "get out of jail free" card to avoid damages. It is meaningless, they are still liable for the previous copyright violation. Otherwise it would be trivial to violate the GPL by just waiting until the code is worthless and then releasing it.
I have noticed that there are no large planes at the flooded Sendai airport. Was there just none there, or did they get them all off the ground before the tsunami hit?
As the article explains, the water is moved closer to the earth's axis despite being at a higher altitude. The north pole, for instance, is zero distance from the axis.
This is due to the majority of reservoirs being further away from the equator than the majority of the water sources and thus water is being moved closer to the axis.
Melting land-based ice caps certainly would slow rotation, but this is because they are at the poles, not because they are higher up.
It is not clear why this approach is not tried more, by legitimate patents. For instance MPEG-LA could pretty much decimate the opposition to H264 by granting a royalty-free license to any software where the source is included (or any similar method they can think of where the purpose is to clearly make distribution of the codec with a Linux distribution possible).
It is possible they have thought of this, but would like it even better if RedHat or Canonical or somebody coughs up a ransom payment like this.
I think the engineers are smart enough to figure out how to make a solar power plant that keeps working even when some of the cells fail. Even though apparently you think it is impossible.
My technique in playing video games is to push all the buttons as fast as possible. Works best in the fighting games. I wonder if this technique can somehow be used by real-world athletes?
The price for *voice* data is about 10000 times less than for SMS data. It is being sent by the same radio to the same cell towers and has the same availability! In many cases the ratio is *infinite*. Me and my SO have a friends and family plan and can call each other for *free*, yet texting each other (which I suspect uses less data than the first 1/10 second of the phone call) costs 30 cents (15 cents for each phone)! Also somebody else texting me costs me 15 cents, yet if they called me it would not cost me anything (it may cost them more, however).
What I meant was that if someone bought a computer with Linux preinstalled, they would NOT wipe it and install Windows. For the same reason people who buy an Apple machine won't wipe it and install Windows.
OSX does not run WIndows software perfectly, in fact it is far worse than Linux. This does not seem to be stopping it. There is a belief that this is due to quality, but I suspect the majority of the reason is that only extreme geeks actually reinstall operating systems. OSX could be the worst thing in the world (I don't think it is btw) and if people bought the machines to get the cool apple logo and shiny case, they still would not reinstall.
I was wondering about this too. Getting rid of the close box was one of the earlier changes tried by window managers (wm2 for instance). Even 20 years ago most programs had a way to close them other than the close box. The only counter examples I can think of were trivial demo programs written without any toolkit but making them quit on a the user hitting Escape would require very little code added to the demo.
It does seem like the titlebar can be eliminated entirely. All operations could be done by the user clicking in "dead" areas of the application. If you click on the blank area in your control panel, you can move the window around, or if you are near enough to the edge you resize it (probably like most Linux WMs do now, you can in effect make the entire window dead area and draggable by holding down Alt or something). The maximize, minimize, and close have been removed. The text in the title bar is either useless or repeated inside the window somewhere. So the title bar is no longer needed.
This would also get rid of the annoying distinction between "maximized" and "full screen".
This is probably a troll, but you will find on Windows that you cannot use ctrl+c/v to cut and paste in the terminal. You use ctrl+shift+c/v. Amazingly enough, this is the EXACT SAME keys you use in most terminal emulators on Linux (the ones you seem to think require the context menu, without realizing that Windows has the exact same context menu in it's terminal!)
I also find it hilarious that you say "In windows ctrl-v or shift-ins is the universal way to copy/paste" and then later say "Linux paste is schizophrenic: ctrl-v, shift-ins". You then try to make Linux sound more confusing by adding "shift-ctrl-ins" (which exists on Windows) and the context menu paste (which exists on Windows in the same terminal emulator programs). You could at least have mentioned Emacs which uses different keys (but of course you can run Emacs on Windows and it has the SAME keys).
Indeed both Gnome and KDE and Windows allow you to drag maximized windows to another desktop, so his reason for the minimize button does not make sense.
You do have to remaximize it after dragging. On Windows 7 (and it sounds like on new Gnome) you do it by hitting it against the top of the screen, which is pretty easy since you are dragging the window anyway.
This would also place almost all embedded linux (ie routers and storage devices) in the same catagory as the Android phones. They don't have the GNU utilities and instead run busybox. This would be useful to remove a large class of devices that are not normally considered when asking how many users run Linux verses Windows (there is also embedded Windows but it seems that is mostly limited to ATM machines).
Some embedded boxes may be running a little GNU software, in particular glibc.
Also it is quite possible to remove all GNU software from Linux (using the BSD utilities instead) and make it run X, and the average person would consider that a "Linux machine".
So I think a better distinction is X/Linux, in that it uses the X window system.
An annoyance is that X may be replaced by Wayland, yet this should still count. X should just mean "window system".