Then if the team works hard (say, they're superhuman and can work 24 hours a day 7 days a week straight) and do what other teams do in 3 months in one, will they get the other two off?
Can we remove undefined features? We can get rid of the GCC optimizations which rely on the premise of undefined behavior to break code to win a speed prize or something, but undefined behavior exists for a reason:
It depends on the CPU.
The problem is that C was designed to be as close as possible to hardware, and some places (RTOS? Kernel?) speed is critical.
The opposite. When the field was in its infancy, one was able to keep whole stacks in his head.
How complicated were CPUs in the 1960s?
How many lines of assembler was in the LM?
How many lines is Linux or FreeBSD kernel? Now add libc.
Now you have a 1970s C compiler.
Now take into account all the optimizations any modern C compiler does. Now make sure there's no bugs _there_.
Now add a Python stack.
Now you can have decent, "safe" code. Most hacks don't target this part. The low hanging fruit is lower.
You need a math library. OK, import that. You need some other library. OK, import that.
Oops, there's a bug in one module. Or the admin setup wasn't done right. Or something blew.
Bam. You have the keys to the kingdom.
And this is all deterministic. Someone _could_ verify that there are no bugs here.
But what about Neural Networks? The whole point of training is that the programmers _can't_ write a deterministic algorithm to self drive, and have to have a huge NN do the heavy lifting.
And that's not verifiable.
_This_ is what's going to be running your self-driving car.
That's why I compared software engineering to biology, where we "test" a lot, hope for the best, and have it blow up in our face a generation later.
On a scale of engineering "hardness" (meaning, we can predict all side affects of action), software engineering is closer to medicine than to, say, civil engineering.
We know stresses, materials, and how they interact. We can predict what will happen, and how to avoid edge cases.
Software? Is there any commonly used secure software? Forget about Windows and Linux. What about OpenBSD?
Did it ever have a security hole?
And that's just the OS. What about software?
There are just too many variables.
So what will happen?
There will become "best practices" enshrined by law. Most will be security theater. Most will remove our rights, and most will actually make things less safe.
Right now, the number one problem of IoT security is fragmentation. Samsung puts out an S6, three years later stops updating it, a hole is found, too bad. Game over.
The problem is that "locking firmware" is common "security theater", which, if there'll ever be a legal security requirement on IoT, it'll require locked bootloader and firmware.
And you can't make a requirement to "keep code secure", because then the question will be for "how long"? Five years? 10 years?
His biggest (current) problem regarding SpaceX is that satellites aren't mass-produced.
If it was, buying a spot on a Falcon or on a Delta would be simple:
TCOFalcon = cost of launch + self-insurance-markup.
TCODelta = cost of launch + self-insurance-markup.
Falcon costs $1233/lb
Delta IV costs $8694/lb.
To compare apples to apples, to launch 50,000 lbs (a full Falcon FT 50,000 lb), a Falcon would cost 61,650,000, and a Delta IV would cost 434,700,000).
A Delta IV failed once out of 33, and the Falcon 9 failed three out of 29.
Any satellite worth less than five billion (!! That's an _insanely_ expensive single mission) would be cheaper to launch on a Falcon, despite its failure rate
The only problem is that you have to wait for a new satellite
Apple will stay Apple. I don't think they'll go anywhere.
The question is Google. If this happened in 2008, I don't think Android would have taken off anywhere close to the way it did.
But now? One one hand, Android has millions of apps already on the market. On the other hand, Microsoft now has potentially millions of old, existing, applications.
I don't think it will make a dent in the phone market. It's too commonly used as a hand-held rather than a station, and windows apps are useless there.
On the other hand, it can tank the Android tablet market
Theoretically, Google could let you "hide" certain posts if you're not logged in.
The thing that killed blogs as they are is that they're too serious. When signing up you need a title, subtitle, and input is optimized for long essays. Facebook is optimized for sign up, write your name, find friends, and post pictures, videos and sometimes text.
Really, if Google+ was Blogger Basic where you sign up, put AdWords, post pics, and it could have taken off.
Google lives off the open web. Two out of four of its main products depend on the open web:
1. Search - the less of an open web, the less is searchable by Google. Facebook is a classic example.
2. AdWords/AdSense - Facebook, CNN, BBC don't need it. They have their own networks, and they 're big enough to offer a "take it or leave it" approach.
(The only two main products not relying on Open Web is Google Cloud and Android).
Google actually had everything set up, a social network (blogger), a wall (reader), IM (Google Voice, email).
But they decided that FB is taking over. What did they do? They made "their own FB". Which solved no one's problems. Google+ had nothing over FB (except for circles, which FB promptly copied), and killed their old social apps.
Now their running around as a chicken without a head.
> The point isn't to prevent people from customizing their use of the software. The point is to create a system where developers get paid and projects are financially sustainable, instead of being abandoned or barely maintained.
The problem is that's actually one of the main powers of Open Source - the ability to fork it past the desires of upstream.
For example, I use Windows, which is "supported source". OK. Microsoft decides to put spyware. Now I need to rip it out. OK. Did so.
Now, one day later, Windows gets updated.
I have to go through the code again.
If it would be "Open Source", I'd just fork it. But now, I can't even share modifications (is it a derivative work?).Now every user would have to go through the code, find the privacy violations, and re-compile it.
Also, what happens Microsoft get's fed up and fully closes source (no more updates to "Supported Source", and they drop out of the program)? Each user has to keep up his version of Windows?
Not too useful.
If you think about it, how are there commercial communities around Apache/MIT/BSD?
Because no one wants to upkeep his fork, so they contribute code back so others can help maintain it.
That freedom can only be maintained by the ability to fork.
Commercial open source tends to be done for two reasons:
1. Common goal development. Several companies needs a UNIX. Rather than do all the development themselves, they work together. That's how Linux works.
2. Backup if original company's strategic goals move from your goal.
Here, neither work as you can't cooperate with others due to licensing issues.
If not, you're just pushing responsibility up.