Implied buttons must be the peak incompetence of UI design.
And yet mobile app developers think it is the pinnacle of UI design. White words on a black background, and four or five of them are live links, but you can't tell which ones without clicking on them. Dumb. Dumb. Dumb.
The best things to open source in this scenario are the things that you would buy from a third party, if you trusted the supplier enough. For proprietary software, a second source is almost always impossible. For hardware, it's often quite difficult, depending on the component. Switching from Intel to AMD is quite easy in a lot of cases, switching from a Qualcomm SoC to a Samsung one is more effort. Switching other components can be very hard. Service companies are a lot easier (switching from one law or accounting firm to another is much easier than retooling a production line).
Apple's involvement with LLVM is quite a good example here. Their ecosystem absolutely depends on high-quality compilers existing for OS X and iOS. With Classic MacOS and early versions of OS X, they outsourced this to Metrowerks, who produced quite a competent IDE and set of tools. Then Metrowerks, their sole supplier, was bought by Freescale and development on the Mac versions basically disappeared. They had some involvement in GCC development inherited from NeXT, but GCC was problematic for IDE integration (the parser is designed in such a way that it's impossible to use for syntax highlighting, for example - it does constant folding very early so you can't differentiate 4 and 2+2 in the source). They decided that they needed to bring compiler development in-house, but it was a lot cheaper to do so as part of an open source ecosystem. Apple now contributes something like 40% of the code to LLVM and that vast majority of what other people do directly benefits them, so they're effectively halving their costs. And, of course, giving away the IDE and compiler tools for free (rather than charging, as Metrowerks did) makes people more likely to start developing for Apple platforms.
Yeah, but it's not like you just give up and stop using a computer when Google plays "where's the send button now?" with gmail.
Or when Slashdot plays the "what do I click to read the comments" game?
Hell, a while back slashdot's own Rob Malda made CNN's list of 10 people who don't matter.
You know you matter when you get mentioned in a list of people who don't matter. People who don't matter don't even make THAT list ( in other words, the other 7 billion people in the world).
I do not suspect so. People are used to getting Windows bundled with their computers. If those people suddenly have to start paying for Windows, they would get annoyed and start digging deeper for free alternatives. Eventually they would find Ubuntu and that would begin to hurt Microsoft's business.
The only way linux is ever going to hurt Microsoft's business is if people start releasing software on linux instead of Windows. WINE isn't going to cut it. Too much overhead.
Windows threading and synchronisation primitives
What windows synchronisation primitive allows:
- Timed wakeup (i.e. try to lock, time out if you fail).
- Adaptive mutex behaviour (spin in userspace for a bit before calling the kernel).
- Can atomically be released when you sleep on a condition variable and reacquired when you wake.
Give up? So did the developers of the Microsoft C++ stack, which is why their std::mutex uses something custom, whereas implementations for POSIX systems just use pthread_mutex.