In the '90s, you could distribute code for PGP in a book, and effectively circumvent regulation. Now, you can ban encryption apps in the walled garden and effectively shut down an entire genre of computation.
In the '90s, you could distribute code for PGP in a book, and effectively circumvent regulation. Now, you can ban encryption apps in the walled garden and effectively shut down an entire genre of computation.
Sure you can build functionally good software, like PGP, but making something work is only maybe 25% of the way to delivering a product. The other 75% of the work is in getting the user experience right, packaging, supporting all the different platforms, etc. Walled gardens are winning because they deliver orders of magnitude better UX than open systems, and that's because they have a revenue model that can allow them to pay people to do the immense amount of work required to polish things to that extent.
https://www.crowdsupply.com/purism/librem-laptop (successfully met its funding goals)
https://www.crowdsupply.com/kosagi/novena-open-laptop (arguably more niche and yet it grossed an incredible 305%)
http://ccc.de/ (not all revenue models need to produce hardware)
Creating really beautiful UX is a brutal slog through the tar pits of hell. The amount of testing, testing, testing, testing, TESTING and endless revision that's required to iron out every little nit-picky detail of a user's interaction with a product is immensely time consuming and expensive. You need top-tier designers working for years with large teams of testers, beta users, etc.
For example: I could not imagine fielding a competent turn-by-turn directions app for a phone for less than $10-$15 million in funding, minimum. Then you'd need millions a year minimum in recurrent revenue to finance the endless polish and nit-picky improvements that would be required year over year to keep it competitive with the alternatives.
Tiny details matter. For example, when you start turn-by-turn directions on Google's Maps app for Android, it doesn't say anything right away if you're already going along the correct route. It's silent until it's time to turn. This caused me to assume something was wrong with it or my volume was down. Almost made me throw my phone out the window.
Think about what a tiny detail that is. Google with all it's funding and team didn't catch that. Apple got it right. Their Maps app starts talking immediately, letting you know it's working.
It's a new age -- the age of overall user experience. Features are now a commodity. They don't matter all that much. Getting something working is only step one of ten. The other nine steps are to get it working well.
The thing that makes UX really hard compared with features and capabilities is that there's no straightforwardly "right" answer that can be discerned Platonically in isolation.
UX is a matter of taste and people, not algorithms and code. It's not something that responds to the kinds of Moore's Law efficiency gains that can be achieved in the CS realm -- it requires the irreducibly expensive commodity of human time and effort.
The fact that this kind of time and effort investment is irreducibly expensive is why huge mega-corporations like Apple and Google have such an intrinsic advantage in this department. It's easy to understand why they dominate the mobile space -- when you're interacting with a mobile device, your appetite for poor UX is quite a bit lower than when you're sitting at a desktop.
They really don't. All it takes is one designer with good taste, or a developer frustrated with the status quo. Sure, big companies have the resources to do a lot of in-house testing and iteration, but that does not suddenly create taste.
> easy to understand why they dominate the mobile space
The reason for the current duopoly in mobile OSes has less to do with pure UX, and more to do with successful jockeying for market position across a multitude of factors (yes, including UX). WebOS? Windows Phone? Both arguably had/have superior UX, but still lost in the market.
Anyway, the OS vendor is irrelevant in this context, notwithstanding app investment due to market position. One can have horrible app UX on iOS, or terrific app UX on Android -- and Android is really not that great overall, especially with older and/or lower-end devices.
Moreover, there are plenty of successful third-party apps, regardless of platform, most of which haven't invested millions and years into UX.
However, large companies like Apple can deliver an entire suite of software to users that has high quality, consistent UX.
This means consumers who aren't used to technology only have to learn a lot of things once. On the other hand, people who've grown up using Apple products already have an idea how to use new ones.
Individuals and small organizations can create some amazing things but large corporations definitely have some intrinsic advantages, especially when it comes to larger projects.
But it's also quite hard to tell if an open source application is secure. Do you have time to audit thousands of lines of impenetrable C/C++/Java/Go/etc. code? The rash of OpenSSL bugs we've had recently shows that "Linus's law" really doesn't work -- the fact that the code can be audited openly doesn't mean anyone is going to spend the time to actually do it. People are busy.
It comes down to the question of "how paranoid are you?"
If I were highly paranoid I'd take a defense in depth strategy -- layer multiple cryptosystems, possibly on multiple OSes/platforms, etc. But that level of paranoia comes at a price of course, both in setup time and overhead.
iMessage is pretty good for every day use. PGP is probably better since you have greater transparency, but is less convenient. SSH and SSL are also pretty good for every day use. But I would trust none of those things to protect me from the NSA or a very well funded criminal adversary.
When an exploit in closed source software is publicized, we have to take their word for it that it gets fixed.
This would be expensive ( in time and effort spent), but is possible for some things.
With things like crypto though, AFAIK most crypto is based on certain assumptions which seem to be true, even after a high degree of investigation, but for which a proof has not been found. In these cases, it would not be feasible to prove the program to be "secure", but one could prove that the program correctly implements the algorithm.
But then there's also timing attacks and the like, and I don't know that there are tools for proving things about the running time of a program, so as to prove that the running time doesn't leak information?
But for some things, one can trust a program to be correct if it contains a proof that it is correct, and you agree with what correct is being chosen to mean.