Hacker News new | past | comments | ask | show | jobs | submit login
Why Is Google Building a New Operating System from Scratch? (fastcompany.com)
103 points by bertazure on Aug 17, 2017 | hide | past | favorite | 89 comments



As a Google Fi user, who frequently gets relevant ads immediately after talking about a product on the phone (voice call) with my girlfriend - I do fear a world where Google controls the OS.

Once I also mentioned some tv's I was interested in (not on the phone, but in the same room as the phone) and also got ads right afterwards. I do not know if it was related to an app open or the phone itself, but a scary invasion of privacy nonetheless.


Holy crap that is weird. Well I won't be using Google Fi. I was reading Fi's Terms of Service and came across this gem:

We take protecting your Customer Proprietary Network Information or “CPNI” very seriously.

Using CPNI without your additional approval is limited to specific purposes. By using the Services, you allow us to use, disclose, and permit access to your CPNI without your additional approval only for the following limited purposes:

...

Any other purpose permitted by federal law

So they can use your personal data without your approval for anything that's not illegal? Spurious use of the word "limited" there Google.


Google will not be evil ... except where permitted by federal law.


Wait, if that's a limited list, why is there anything listed before "everything not illegal" at all? Are there other things they do that are illegal? Or is that just designed to confuse and mask the last item?


It's stupid. The whole section could be rewritten as just:

By using the Services, you allow us to use, disclose, and permit access to your Customer Proprietary Network Information or “CPNI” without your additional approval for any purpose permitted by federal law

I just read it myself, that's essentially what it says. The whole privacy section is just garbage filler to distract you from that, unless I'm reading it completely wrong.


I wonder why it's permitted by Federal law for a corporate entity to write legal notices in such a way that is limited to, in most cases, leading the user to believe something is being asserted via highly contrived prolixity when in fact the assertion is entirely void of any substance outside of the tacit acknowledgement from the entity issuing the notice that there will be no breach of notoriously vague Federal law unless the lawyers working for the entity, who (in so many words) actually authored the notice in the first place, see a loophole through which they believe they can exonerate their client without needlessly causing their client's PR firm to work overtime especially in cases where the aforementioned lack of substance is purposefully placed over the purpose of the notice, which may be defined, but is not definitively limited to meaning, the entity will more or less use the data of the notified person, who may or may not be misled by traditionally sound intuition as well as the insubstantial notice being described to believe that his or her actions upon the entity's platform are private, as currency, thus leveraging the intimate knowledge of the disoriented, albeit notified, person to manipulate thoughts, desires, and actions (not to mention internal and external perception in general) towards any and all ends the entity dictates based on fiduciary goals and its incommensurable and entropic drive to further consolidate control of a market the entity continues to cultivate and grow beyond all reasonable proportion.


> Or is that just designed to confuse and mask the last item?

Bingo. The main reason most ToS's are like ten pages long, really. They're counting on you not reading it.


Plus it's doesn't exactly instill confidence in me that Google has to go out of their way to tell me they're not doing anything illegal. I just would have assumed that, but thanks for letting me know Google.


Google owns 60-80% of these markets: smartphone, search, advertising, e-mail, video, browser, mapping. They don't need to own your desktop OS.

This is also why I always tell people Apple vs Google is a silly comparison. Apple might have a bigger market cap and make more money (currently), but Google largely owns nearly every important market. They're set up to take the deep learning market as well, and if Waymo pans out they're also the first to level 5 autonomous cars.

Hell, during the Obama era, Google had on average 1 White House meeting a week (!). That's influence no market cap can buy.

Funny thing is that I'm typing this on my Macbook Pro with my iPhone next to it. Apple is a sublime hardware company that also takes great care in crafting the most human software experience, but we're going to a 'The Expanse' future where every screen is just a dumb pipe to the cloud and the software on that cloud is just a dumb pipe to your personal AI and massive data trove. Apple is ill-suited for such a world, yet Google would thrive in it.


> Hell, during the Obama era, Google had on average 1 White House meeting a week (!).

I had no idea about this - does anyone have citations on what the meetings were about? Were they just typical lobbying efforts?



This sounds interesting. While it is definitely possible to enable, I doubt that this would be legal in many countries.

1. Is there any proof that google "mines" your phone conversations on project fi?

2. Have you done testing? Like, get a friend and do several phone calls over a week with trigger words you agreed on and that you will use a couple of times (e.g. herpes, pregnancy, etc.).


For me it's the push notification "how was your stay at Starbucks" .. so creepy


I think you can disable location history/reporting. (I don't because I like looking at my location history, but it IS creepy that it's an opt-out)


These are two separate things. You can disable location history, but I'm not actually sure what that means in terms of data retention besides "you can no longer access your location history".

I do know that it does not disable these sort of "immediate" responses to your current location. You can disable the responses (one by one separately), but it is pretty clear that it disables only that specific response, not the data collection itself.


It's also (to many) a creepy usage of the data. It's reminding you that it's watching you — and not (primarily) to help you, but for somebody's profit.


You still get those even with it disabled.


I do like the NSA to know where I was at a certain time in history. So that they cannot come up with a random allegation and I do have some proof that at the least my phone was somewhere else.


Are you sure the two are actually related?

AFAIK, Google doesn't mine phone calls, and I'm not aware of any companies that do. Even thinking about it from a technical point of view, it seems quite unlikely.


Why? Here is why:

gOS#> dmesg

Grow with Google ads - Get your ad on Google today‎ Adwww.google.com/AdWords‎(888) 971-0642 Reach your customers in the moments that matter. Learn more now. Styles: Search Ads, Banner Ads, Video Ads, Mobile Ads, App Ads Services: Google AdWords, AdWords Express, Google Display Network, YouTube Video Ads, Google M

[15978.846183] PM: Preparing system for mem sleep

[15978.846447] (NULL device *): firmware: direct-loading firmware iwlwifi-6000g2a-6.ucode

[15978.846461] Freezing user space processes ... (elapsed 0.015 seconds) done.

[15978.861750] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.

[15978.862917] PM: Entering mem sleep

Grow with Google ads - Get your ad on Google today‎ Adwww.google.com/AdWords‎(888) 971-0642 Reach your customers in the moments that matter. Learn more now. Styles: Search Ads, Banner Ads, Video Ads, Mobile Ads, App Ads Services: Google AdWords, AdWords Express, Google Display Network, YouTube Video Ads, Google M


gOS#> ls ~

File list brought to you by Walmart.com - Get ready for Back to School with low prices on school supplies like Laptops, Backpacks, Calculators, School Uniforms, Notebooks and Dorm Furniture. Free 2 day shipping.

Desktop Documents Downloads Music Pictures Videos

gOS#>


  gOS#> vi /home/jam/todo.txt

  Quota of ads clicked not reached for the time of day.

  gOS#>


  gOS#> vim /home/jam/todo.txt

  This looks like a request from a bot! Please complete this CAPTCHA:


    [ ] I am not a robot


> Unix got its start as a volunteer project with no organizational recognition from Bell Labs, and Linus Torvalds started working on Linux as a hobby.

I'm not Richard Stallman, but I consider it worth mentioning the middle steps of GNU and the GPL that gave the hobby a useful endpoint.


Linus only worked on the kernel, the coreutils from GNU were developed way, way earlier. Of course one cannot go without the other, but RMS and the folks behind GNU certainly deserve to be mentioned. Note that Linux had no clear license at the beginning and RMS influenced Linus to have it under GPL2 - that was the right decision at the time.


I thought Linus chose to use GPL2 himself?

Can you back your statement up?


> “I may not have seen the light,” writes Torvalds, reflecting on Stallman’s 1991 Polytechnic University speech and his subsequent decision to switch to the GPL. “But I guess something from his speech sunk in.”

https://en.wikisource.org/wiki/Free_as_in_Freedom_2.0/Chapte...

I claimed RMS influenced Linus, but I did not mean he did it by talking to him personally.


Needs a [2016] doesn't it? Not that Fuschia isn't interesting...


Yeah. Not that this is bad, but there are lots of more up-to-date articles on Fushcia.

E.g. from May https://arstechnica.com/gadgets/2017/05/googles-fuchsia-smar...


Yeah! By the way, there is this mention of 3D world in Armadillo User Shell: https://fuchsia-review.googlesource.com/#/q/3d+world

Can you please try to elaborate on this?


Yup, but I missed that. Can I do it afterwards? P.S: I'm new to hackernews, and I don't have the technical knowledge of living here. I was just curious to listen to you guys/gals what you think of this article.

And this article was mentioned by one of the Fuchsia Dev: https://twitter.com/chrismckillop/status/767479164785991680


It sounds to me like an operation intended to employ some skilled engineers in order to keep them away from working on Google's competitors. I don't see a lot of outreach or organisational support, but maybe it is there and my cursory glance just hasn't turned any up.

It looks like they're doing the Google equivalent of Microsoft Research - which as far as I can tell revolves around hoping something cool comes of the projects, but mostly just trying to keep their competitors from getting top talent.


That would be truly nefarious (which fits in perfectly with Google's M.O.). Do you know of any precedent for companies operating in this way? I guess the NSA probably operates on similar principles?


Why is this nefarious? Nothing is forcing these allegedly top employees from staying at Google. They get to work on something cool and get paid presumably a disgusting amount of money, and Google gets to maybe have a groundbreaking technology at the end of it, and their competitors don't get the allegedly top guys. If those employees would feel more fulfilled working somewhere else, and many do end up leaving, they can.


What the OP described is removing talented people from the labor pool and directing them towards efforts which have no expected application in the market. I'm not suggesting it's the individuals who choose this arrangement who are losing out, it's society at large.


I'd do it to get rid of the fucking dependence on Java.


Be careful what you wish for, the OS might end up with javascript.


Well, actually the fuchsia folks seem to take rust seriously...

https://fuchsia.googlesource.com/magenta-rs/ https://fuchsia.googlesource.com/mxruntime/


Dart, no js.


Anyone know why they are building in C as opposed to a newer language like Rust or Go? I mean, if you're going to start from scratch, might as well go all the way, right?


C is still the king in performance I believe. Linux still has assembly code apart from C for those crucial performant sections.

Remember if you are talking at the HW-level you don't have the luxury of libraries and I doubt Go/Rust would be of any help unless you build the ecosystem for it. Something like the implementation of coreutil binaries can benefit from Go/Rust but not the OS-code itself.


If Rust is significantly slower than C, it's a bug.


Yeah, just one that will take a decade of compiler optimizations to solve. C and C++ didn't become what they are today overnight.


We share an optimizer with clang thanks to LLVM; we get to take advantages of those decades already.


Clang and LLVM have evolved together for a while. It is pretty difficult to get similar results with other LLVM frontends.

You don't have to believe me, just write a reasonably complicated algorithm (say.. a naive SAT solver) with both C++ and Rust (or Swift or $NEW_LANG) and compare the speeds.


You don't have to believe me either; if you try it, you should generally see that they have the same performance.


Here are some fairly realistic examples.

1. Rust : http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...

2. Swift : http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...

As for a SAT solver, I was not speaking out of my ass. Here is one try that got a fair bit of attention. https://github.com/mishun/minisat-rust


Yeah, we've had some small regressions recently; a few months ago we were usually faster, now we're slightly slower. Still generally close, except for the ones that need explicit SIMD, as that's still being designed.


When you say "naive SAT solver" do you mean one where you hard-code a boolean formula with N variables and then check every possible solution (from 0 to 2^N)? If so, does this kind of program accurately characterize the kind of work a kernel does?


No, something like the CDCL algorithm without domain specific heuristics and tweaks. I expect that is fairly representative in terms of ..say.. common data structures needed in most systems.


I think Go has mandatory garbage collection. I think you can turn it off, but you can't manually manage memory.

Manually managing memory is important when you are writing real-time software like operating systems. You don't want the garbage collector to kick in without being asked when you trying to complete a task within a deadline


You could manually manage memory in Go if you want. Here's a few links:

https://news.ycombinator.com/item?id=9545873

https://github.com/teh-cmc/mmm


Probably because Google's C++ tooling is top notch and their developers are all proficient already.


They are actually using lots of Rust within Fuchsia/Magenta now and have been for months.


I poked around and didn't see any Rust code, and the github stats say

    C 49.0%	 C++ 45.4%	 Makefile 2.9%	 Assembly 1.1%	 Shell 0.8%	 Objective-C 0.4%
https://github.com/fuchsia-mirror/magenta


oh jeez, a kernel in C++...

The only thing I dislike about Linux is that it drags gcc with it, for this you need g++ too.


I don't know anything about kernel dev: why would C++ be a bad choice?


Its not really a bad choice, but writing really good c++ is hard (sightly less with the newer versions, but still). You can use the same performance tricks that a C dev will use to make your code faster, plus a whole lot of new tricks, some doing exactly the same thing (but not the same way). This is not a problem if your team is used to work together and have a common codebase they already wrote together, for for OS project (like linux), its a bad idea. And in my opinion, writing optimized c++ code is waaaay harder than writing optimized C code (almost each time i had to optimize c++ code, it ended looking like c with classes and weird pointers)(Disclaimer: i'm bad with OOP, it might be just me).

Anyway, Google is supposed to have good c++ devs, with experience coding together, so this is not a problem for them, i think. Another issue is that the compilation is slow compared to C, but i don't think its an issue for Google either.

[edit] Yes, binary size can be a problem too, forgot about that. But if you only use basic libraries, i don't think your binary will grow that much, right?


I'm not an expert, but I think it's because c++ is _heavy_. Start using a few features like genetics and suddenly your binary and compile times grow substantially. You only need to look at chrome to see this happening.


Microsoft and Apple develop their respective kernels in C++, and AFAIK, developers are limited to a very restrictive subset of C++, classes are forbidden, so are exceptions, so are new/delete. I think, templates are forbidden, too, but I am not certain.

Once you shrink C++ down to such a subset, it is substantially less heavy. I do not think I am qualified whether that makes it a better choice, but means there are examples of fairly successful operating systems whose kernels are written in C++.


Once you've striped all those features from C++, what's left to differentiate it from C?

I've only used C++ in an academic setting.


NB that I have only a little experience with C++ and none whatsoever with kernel and/or OS development.

> Once you've striped all those features from C++, what's left to differentiate it from C?

Not much, I suspect. You can declare variables anywhere instead of just the beginning of a block, you can use references, and C++ handles const-ness much better than C. Function and operator overloading is a double-edged sword, but it is possible to use them in a way that makes code easier to write, read, and maintain. C++ being C++, there are surely a bunch of things I miss.

But yes, without all the advanced features the gap between C and C++ shrinks significantly,


They have an AI now that guarantees no subtle flaws in the C code.


Antagonistic headline.

The article does a pretty good job of answering the question: Linux is bloated, isn't real time, and has IP issues.


"Linux is bloated, isn't real time, and has IP issues."

There have been real-time kernels for Linux. They're kind of important for people using Linux for professional audio (and doubtlessly other fields as well).


Yes. There is the PREEMPT_RT patchset for sub-millisecond response times. Many of the features for PREEMPT_RT have been merged to mainline, so stock performance is quite good to the millisecond level.


Linux is modular, you can remove the parts you don't want.

Linux has multiple real-time varietals.

Linux has no IP issues that I know of.


IP issue: Google doesn't have the right to give hardware vendors a pass on proprietary drivers for Linux. Ignoring the problem seems to work so far, though.

That said, a stable driver API with the possibility to update the kernel without updating drivers is probably more important to Google. In the best case (and I expect a worse result than that) it means that Android phones can be updated for a long time without requiring support from the vendor.

The damn vendors should just upstream the damn drivers. Drivers for embedded hardware are such a clusterfuck. You have no idea how bad it is unless you have worked in that space.


Linux being GPLed is probably the only reason it's used so often on all these different embeded platforms. No one is sharing code on these other oses unless you have piles of money but with Linux anyone can pretty much click "y" in menuconfig and you're good to go on nearly anything.

The GPL has made Linux a "Universal Kernel" of sorts.


Linux "enterprise" distributions update things for a long time without requiring support from the hardware vendor.

Google's familiar with this approach, I hear that they backported x86-64 to an earlier kernel for years.


In the embedded case, usually only vendors have (or used to have, who knows if they use source control) the source code. As I said, you have no idea how bad it is unless you've had to work with that crap. Maybe have a look at "Bad" in this classic. https://www.dolphin-emu.org/blog/2013/09/26/dolphin-emulator...

Edit: right, you can backport fixes and features while keeping the ABI stable. That is what Google seems to be doing with Android kernels to some degree.


And Google has done that -- for instance, they use Binder for IPC instead of dbus/kdbus on Android. But every time Google does that, they pay a price for using Linux, as they have to maintain anything in the kernel that doesn't make it upstream.

The reason Google cares about this, as noted elsewhere, is that there is no stable kernel ABI for drivers, so vendors who release drivers-as-blobs, fail to release the driver source code (yes, it's a GPL violation; yes, it happens anyways) or otherwise pin their driver to a specific ABI need to release new drivers every time the kernel changes. Google would love to release Android versions independently of drivers, the way Windows works.


> Google would love to release Android versions independently of drivers, the way Windows works.

Which they'll be able to do with Project Treble: https://android-developers.googleblog.com/2017/05/here-comes...


it won't update the kernel part.


If they had stuck with the APIs and ABIs literally everyone else uses they wouldn't have this problem in the first place. Most people's userspace is not tied this heavily to the kernel version because the APIs and ABIs there are fairly stable.


Interestingly enough, if you look at the Linux kernel in terms of LOC, it is lower than Win7/8/10 which are lower than MacOSX.


that's quite impressive as Linux also contains the source code for mountains of hardware, from the most ancient to (almost) the most modern


Not to mention drivers for every networking scenario and filesystem under the sun.


By every filesystem, you mean all variants of `ext`, right?


But it's leaving out a lot more important stuff:

* Secure and fast micro-kernel.

* Only non-blocking async calls (similar to Microsoft's Singularity).

But they didn't follow through with using managed memory only as Microsoft did, which might catch them some day. Their app-layer does, so it's a problem to solve anyway.


And it start with a simple program like this: https://fuchsia.googlesource.com/init/+/d609758af8bb0b7c66d2...


Yeah all the other user facing system software Google has written ended up so well...

Chrome

Chrome OS

Android


Chrome is by far the most popular browser by market share[1][2], and Android is the most prevalent OS in the entire world[3][4], so... not really sure what you're getting at here.

[1]: https://en.wikipedia.org/wiki/Usage_share_of_web_browsers#Su...

[2]: https://www.statista.com/statistics/268299/most-popular-inte...

[3]: https://en.wikipedia.org/wiki/Usage_share_of_operating_syste...

[4]: http://thehackernews.com/2017/04/most-popular-operating-syst...


Not sure if you're being sarcastic. Chrome is the most populat browser, Chrome OS is highly successful in schools and Android has 2 billion active devices.


>Windows is the most popular desktop OS, therefore it is the best.

Android is awful, people tolerate it but I doubt anyone is particularly fond of it. They just have the choice between that and iOS.


I disagree. Android has some problems (updates being one of them) but lots of people love Android because of the ability to customize the OS the way they like, being able to change default apps, access to the file system, etc...

As for Windows, I would say Win 10 is a great OS. Now, is it the best? I don't think in those terms. To me that's an OS that does its job well despite some UI inconsistencies, plus it's compatible with the apps I need.


IMPACT


Um?




Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: