HNHacker News
TopNewBestAskShowJobs

lambda

11,905 karma · joined May 21, 2009

submissionscomments
lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
Sorry, maybe I should have said "inspired by" or something.

You're right, I'm not aware of any actual implementation, outside of validators, that treated it as such.

I did actually say a little later that no web browsers actually implemented it as SGML, but the sentence you quote could cause confusion; but it's too late for me to edit now.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
In part, I think it's because there is still good work that goes on under the W3C umbrella in other areas; the CSS working group has managed to stay reasonable, learn from the mistakes of some over-engineered past standards, and continues to work with implementers.

Also, there are reasons to want some of what the W3C provides that the WHATWG doesn't. The W3C has many more member companies, and it can get them to sign off on patent rights so there's less likelihood of some one of Adobe's patents on page layout in InDesign suddenly being infringed by web browsers due to something in the spec.

And finally, I think that the W3C wants to stay relevant and so it keeps on trying to work from a basis on the WHATWG spec, and promising it will be good this time, and then it goes off and pulls this stuff again.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
Not if that < had slipped in because it was in a piece of static text in a string somewhere in the source code.

You can apply mandatory quoting to untrusted input all you want, but there are going to be times when you have trusted strings that can still contain stray characters that will make the resulting markup invalid. And in many cases you don't want to have mandatory quoting for all of that, because these strings may have markup you want to include.

And yeah, you can argue that instead of generating content by appending strings, you should be building up a proper type-safe DOM structure that can be serialized. I'll wait while you go boil the ocean of converting every single web application framework that exists now outside of a couple of obscure type-safe functional programming frameworks, and in the meantime I'll be able to browse the real web without every other page giving me validation errors.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
Because there's no point in reconciling the specs if you don't actually reconcile them.

If the W3C spec is a snapshot, possibly of a subset, possibly with some editorial but not functional changes, then reconciling the specs is useful; it gives you want the W3C wants to provide, versioned, frozen specifications that can be used as the basis for other specs, for people to claim "full conformance" with a particular version, and so on.

Or, if the W3C process identifies real issues, then it should work with the WHATWG community to resolve those issues; since the WHATWG spec is being used as the upstream, evolving spec that these snapshots are being made from, it makes the most sense to get the changes into the upstream first, so you don't have to resolve the issues every time or maintain divergence forever.

However, the W3C instead just insisted on writing the spec the way it wanted, without regards to whether it would actually be implemented.

It makes no sense to publish a spec that will never be implemented by any of the projects that actually have real-world implementations, and differs from the spec that the implementers actually use. That just causes confusion.

So yes, they hijacked the process in the sense that the WHATWG agreed to work together with the W3C, but the W3C never really worked in good faith to resolve differences or provide technical arguments for their changes.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
> I implement XHTML1.1, you implement HTML5. We both get 1 month time.

Do you get to use libraries or not?

If you get to use libraries, there are plenty of libraries for both of these tasks, so it will be fairly equivalent. In fact, if you want to really support XHTML well, it will probably be more complex, because you have to take into account namespaces; a tag or attribute is not just a simple string, you have to consider the namespace it's in, so you would have to deal with that.

If you have to write it from scratch, I'd actually also bet on it being quicker for HTML5. The exact algorithm is specified in the standard; you just have to translate that from pseudocode into whatever language you're working in.

In XHTML, you have to look through several standards (XHTML 1.0, XHTML Modularization, XML 1.0 which includes the DTD, XML Namespaces, XML Schema), and then translate from the specification in a declarative style into a algorithm that can actually be used to parse the document. XML parsing is actually quite complicated.

> XHTML was a worthy goal – with it, we wouldn’t have a need to run headless Chrome for tests. We could parse the web, and actually use the data.

What? XHTML wouldn't have replaced the use of JavaScript to add features and load content. It wouldn't have replaced people's inappropriate use of tags. It wouldn't have replaced the fact that web pages are written for human consumption, and so don't generally try to include appropriate annotations on data for processing by other tools.

> HTML5 is amazing for existing browser vendors, developers, and in the short-term, users. But everyone else loses. Horribly.

Imagining that some magical standard is going to make everything better for users is a pipe dream. Providing good data formats and APIs for exporting data is hard, and is a different problem that providing user interfaces and interactivity. There's not some way in which XHTML could have been extended to serve both purposes; they are just too different.

This is why, when people care about providing programmatic access to data, they generally provide two endpoints; one serving HTML, CSS, and JavaScript for humans to interact with, and one for providing JSON for machines to parse. There have been endless attempts to try and make one standard that would work for both purposes, and they've failed because that's just not a good approach for solving the problem; instead, it's better to just have an API that both the UI code (whether on the client or server side) can use, and other developers can use if you want to expose it.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
> Most of the web quickly moved to XHTML.

Most of the web didn't move to XHTML.

A lot of people who were interested in being standards compliant moved to XHTML 1.0 Transitional, which was the HTML compatibility subset, but they only ever served it and validated it as HTML, not XHTML, because if you served it as XHTML, one single stray < that someone had forgotten to quote somewhere would break the parsing of the whole page.

The piece written by Hixie was influential because it was a wake up call that the direction the standards bodies were going in was pretty much fruitless, and that there could be a much better way to do it which wouldn't involve breaking compatibility with all of the existing content and would give web developers and users features that they actually wanted.

> As web developers, we should follow the WHATWG and ignore the W3C, because the W3C have lost the political battle for HTML and we need to get our stuff working on browsers, all of whom follow WHATWG. But that's an unfortunately pragmatic approach that shouldn't amount to acceptance.

I fail to see how there is anything unfortunate about this. What about rewriting everything in XHTML 2.0 (https://www.w3.org/TR/2010/NOTE-xhtml2-20101216/), and having to be extremely conscious of any possible stray < that could sneak in to a page without being quoted, would have been preferable to:

1. Consistent parsing support for existing content, and content that might have slight problems like stray <, in all browsers

2. Standardization of things that people actually use to build web apps, like XMLHttpRequest and Canvas

3. Consistent handling of encodings between browsers, including encoding sniffing

4. Consistent handling of quirks mode vs. standards mode between browsers

5. Actually having browsers support compatibility with vendor-prefixed versions of features, because some browsers widely used introduced prefixed features that web developers actually started relying upon

And also, have you ever tried getting involved with the WHATWG process? I have, and I find that they are very receptive to intelligent discussion of issues.

What doesn't work well is to insist that you have a problem and that this particular solution must be used to address the problem; because a lot of times, it's easy to come up with some proposed solution but it then turns out that it's either a lot more complex in practice, your proposal does't fit in with the rest of the ecosystem well, or the problem can actually be solve just in tooling on top of HTML without having to change the spec at all and then wait for multiple browser vendors to all independently implement it.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
The W3C actually does do some good work in other working groups; the CSS working groups seem to be working smoothly.

The W3C also oversees a lot of other standardization processes that aren't directly related to web browsers, like RDF. There are people who find this useful.

I think a lot of it is a power play. The W3C wants to be relevant, and the most relevant things in the web world are HTML, DOM, and CSS (there's also ECMAScript, but that already has a different standards body that owns it).

There are a lot of other standards that use HTML, CSS, and the DOM, such as ePub. The W3C wants to be the normative reference for these core web standards; many times, one standard will have to refer to the other, so the W3C wants to be the one that defines the "official" HTML standard.

But the W3C's process and policies are just terrible. They let people take over standards who have no intent on working with those most impacted by the standards, the people who develop the browsers that billions of people use daily to access tons of diverse content. So instead of just providing a lightly edited snapshot, possibly with some WIP features removed, of what the WHATWG produces, they start going in and meddling and making changes with insufficient justification so you have two forked standards providing a lot of confusion for everyone.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
> The WHATWG has always opposed the W3C's spec. They see it as confusing to have two "official" specifications.

The WHATWG has not always opposed the W3C's spec. The WHATWG explicitly agreed to work with the W3C to form an edited, snapshot spec based on the WHATWG spec. That's what HTML5 was supposed to be.

However, the W3C process then hijacked this, by dropping things from the WHATWG spec, adding things back that had been removed because they had never been implemented properly and implementing them wouldn't have been very useful, and so on. The WHATWG objected to this useless divergence.

lambda··on Microsoft, Google, Mozilla, and Apple Object to W3C Fork of DOM Spec
Way back in the day, HTML was implemented as an application of SGML. SGML was a quite complex markup format, that had lots of features that were kind of complex to implement, and so web browsers didn't actually implement all of SGML, just that which was necessary for HTML and the HTML found in the wild. However, the HTML found in the wild was frequently invalid, so browsers had to implement some clever rules to do something reasonable with invalid markup.

Eventually, people thought it would be nice to have a simpler, easier to parse markup format, with a proper specification, and developed XML. Of course, once you have a shiny new thing, people will come and start bolting things on to it, and so they added features like namespaces, and they included some of the worse features from SGML like the DTD (it turns out, you don't generally want a document to reference its own schema and entities; an application should know what schemas it can accept, and having a URL for a schema in a centralized location means lots of poor implementers would actually download that, and entity expansion is just a nightmare).

However, XML wasn't compatible with HTML, and it certainly wasn't compatible with HTML in the wild. XML parsers are required to reject any invalid markup. The W3C developed XHTML as a way to have a subset that could work in either HTML mode or in XML mode; the idea was that people could start moving to XHTML in HTML mode, and then once everything was cleaned up they could switch to XML mode with strict parsing.

The problem was, strict parsing was never a benefit for either publishers or users. One little bug somewhere in a template substitution which allowed an unquoted < sign could cause the whole page not to parse, and users just be left with an error message. Without completely changing how the majority of web apps worked, there was no way to ensure that all of your content would be strictly compliant XML without the chance of breaking.

In the browser world, XHTML was implemented, with strict parsing in XML mode, but almost no one used it.

At this time, the browser landscape was pretty bleak. Netscape had died. Mozilla was in the process of building their new browser on a completely new engine, but early versions were fairly bloated and slow; it required a rogue group of developers within Mozilla to fork just the browser portion without a lot of the other functionality to produce what is now Firefox. Opera existed but had a tiny sliver of the market share; it didn't help that the free version came with ads, or you could pay for it without ads, while all of the other browsers were just free. IE was dominant, and eventually captured a huge percentage of market share, and then Microsoft just rested on their laurels and pretty much stopped development.

Soon enough, Apple came around and forked KHTML to build WebKit and Safari. In doing so, they did a huge amount of reverse-engineering effort to make their browser compatible with all of the parsing and layout quirks in IE and Gecko; the standards are not at all sufficient for compatibility. This gave them a browser that could actually be used on the majority of web content. With the introduction of Firefox instead of the bloated Mozilla browser, there was actually competition in the browser landscape again.

Meanwhile, the W3C decided that the failure of XHTML to be adopted because it met no ones needs was not sufficient; they went on to start working on XHTML 2.0, a backwards incompatible change with maybe a few nice features for document publishing but which didn't address any of the needs that web developers wanted, like rich interactive web apps.

So the WebKit, Mozilla, and Opera developers decided to get together and actually start providing a spec for what would actually work in the real world on real web content. They called this group the WHATWG. The W3C was not interested in working on this; the W3C group insisted on continuing work on the backwards-incompatible XHTML 2.0. Inspired by the clever algorithm the WebKit developers had come up with for parsing invalid content, they actually wrote up something a lot like that into a spec (with some improvements), and this spec eventually was implemented by all of the major browsers, providing much more robustness and consistency between browsers in how content was handled.

Other features that people wanted, like the ability to draw on a canvas, were prototyped in browsers and specced out in the WHATWG group. Some features were adapted from browsers that had already implemented them; for instance, Microsoft had implemented XMLHttpRequest, which turned out to be hugely useful for interactive web apps, so the WHATWG wrote up a spec for this and other browsers implemented it.

Google eventually wound up forking WebKit for Chrome, then merging back in, and eventually forking again into Blink, and joined this group as well.

Finally, the W3C realized that the work is was doing was irrelevant. No one was interested in implementing XHTML 2.0. What everyone wanted were the new features the WHATWG HTML specification, new features like the canvas, and so on. So they agreed to take the current WHATWG spec and edit it into HTML5.

However, it didn't take long for this to break down again. There were people in the W3C who objected to some of the changes made in the spec for the purposes of matching up with the real world. For instance, there had been some accessibility features like the "longdesc" attribute which were specified as containing a URL pointing to a page with a longer, more detailed description of the item in question for accessibility purposes (something that could, say, contain markup, when "alt" wouldn't be sufficient for a description). However, no browsers had ever actually implemented any reasonable way to get to this, and a survey of web content found that even if you did try to implement it according to the spec, very little content actually used it, and a large amount of the content that used it used it incorrectly, pointing to broken URLs or just including plain text like the "alt" attribute. So the WHATWG spec dropped this, and recommended other ways to link to descriptions which would show up even without special accessibility tools. One of the problems with specialized accessibility attributes is that people who aren't using screen readers can't easily test them out, so it's easy to bit-rot, but providing a normal link and annotating that so that screen readers can link it to the image make it possible to see in a normal browser.

Anyhow, some people in the W3C objected to this, and so rather than just providing an edited version of the WHATWG spec, they started tinkering with the spec themselves, adding things back in, removing some things that had been in the WHATWG spec. The W3C structure is very bureaucratic, and it has all kinds of members who are only peripherally involved with any actual tooling for web development, so it makes it very easy for various people with big egos but no real skin in the game to get involved in the process, while the actual browser developers who would be implementing the features can be shut out of the process.

So, eventually the cooperation between the WHATWG and W3C died down again, with the W3C publishing what it wanted, and the actual browser vendors continuing to work on their living standard document that is a much closer representation of the real world.

And this seems to be another case of yet another attempt to reconciliation and break down. The W3C decided agreed to start with the WHATWG DOM specification, then decided to make some incompatible changes without very much justification, and is now trying to publish a new version.

I think that in a lot of ways, there's an ego thing going on here. The W3C was originally started precisely to specify HTML, CSS, and things like that. While their CSS working groups have managed to stay pretty reasonable and are willing to work with those doing the actual implementation, their HTML and DOM groups keep on being hijacked by people with particular agendas, people who won't work in good faith to try to resolve differences reasonably, and people who think that because they're the W3C, they "own" the spec and so think that the WHATWG is just a rogue group, as opposed to a group of the people who actually have the most skin in the game because they have to actually implement the browsers that billions of people use without breaking a hugely complex and diverse amount of content out there.

lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
You can't just keep taking new lessons. You have to do "strengthen skills" or go back to practice older lessons on a regular basis. In fact, the new scoring system they just released with levels (crowns) for each lesson is supposed to emphasize this; to really complete something, you have to go back and practice it many times.

When I do duolingo, I usually try to do about a two to one ratio of strengthening skills or going back to older lessons with taking new lessons.

lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
Next to no customization is what I want for something like this. I want to be able to mindlessly drill for a few minutes a day, not spend a lot of time fiddling with my decks to get them perfect.
lambda··on Tech Startup Slice Helps Local Pizzerias Get Online
Pizza is pretty universal these days. There was one pizza place near me in college owned by an Indian family; they also sold Indian food. They didn't appreciate it when we tried to order a chicken tikka pizza, though.

Another pizza place near where I used to work was run by an Irish guy, who then later sold it to a Chinese guy.

Oh, and my favorite pizza place near where I used to live was run by a Dominican guy.

I think that pizza place food is not really connected with Italians in the US any more; it's pretty much just become mainstream American. Though there is still a trend for them to have Italian names.

lambda··on Fuchsia is not Linux
Hmm. On UNIX read() and write() are not universal; you can't use them on directories, for instance, nor can you use them on various other things like unconnected UDP sockets.

Treating everything like an undifferentiated sequence of bytes can cause impedence mismatches; each of these types of handles has very different ways that you work with it. For instance, a VMO is just a region in memory. A FIFO is a very small queue for short equally sized messages between processes. A socket is an undifferentiated stream of bytes. A channel is a datagram oriented channel with the ability to pass handles. The log is for kernel and low level device driver logging.

In fact, it looks like the Zircon kernel has no actual knowledge of filesystem files or directories; they are actually channels that talk to the filesystem driver (another userspace process) over a particular protocol.

The thing about having one single universal interface like read() and write() to a lot of fairly different things is that they each actually support different operations; you can't actually cat or echo to a socket (not without piping into nc, which does that for you). Or you can't just echo data into most device files and expect it to work; some of them you can, like block devices, but others you need to manipulate with ioctls to configure properly.

What Fuchsia is doing here is acknowledging the different nature of the different types of IPC mechanisms, and so giving them each APIs that better matches what they represent. A VMO can be randomly read and written to; none of the others can. A FIFO can only accept messages in an integral number of equal size pieces that are smaller than the FIFO size, which is limited at a maximum of 4096 bytes; it is used for very small signals to be used in conjunction with other mechansims like VMOs. A socket provides the traditional stream abstraction, like a pipe or SOCK_STREAM on UNIX, in which you can read or write new data but can't seek at all. A channel provides datagram based messages along with passing handles.

One of the big things that I think the Unix model makes hard is telling when something is going to block; because read and write assume that the file is one big undifferentiated blob of bytes, it can be hard to tell when it's safe to do so without blocking. On the other hand, each of these is able to have particular guarantees about what you can do when they report that there is space available.

I admit that the log ones seem redundant; I would think they would make more sense as just a particular protocol over channels. I don't see any reason for that one to exist separately.

I wonder why you would think it would be better to have one interface that isn't an exact match for a lot of different IPC types, than separate specific interfaces that match them? They are all tied together by being handles, so you can dup them, send them to other processes, and select on them just the same, but the read and write operations behave quite differently on each so having an API that reflects that seems reasonable.

If you like to think in object oriented terms, think of them as subclasses of handle. If you like to think in terms of traits or interfaces, think of there being one generic handle interface, plus specific operations for each type of handle.

The "every thing is a file, and a file is an undifferentiated bag of bytes" is in some ways a strength of UNIX, but in other ways a weakness. You then have to build protocols and formats on top of that, kernel buffer boundaries don't necessarily match up with the framing of the protocol on top, and so on.

And all it takes to give you the power to manipulate things in the shell is appropriate adapter tools. Just like nc on UNIX allows you to pipe in to something that will send the data out on a socket, you need some adapter programs that can translate from one of these to another (and from filesystem files, since those don't even exist at this abstraction level); of course, in many cases, you're probably going to need some serialization format for things like channel datagram boundaries, and there are some things that just can't be translated from a plain text bag of bytes (like handles).

lambda··on Building a Text Editor for a Digital-First Newsroom
ProseMirror, the underlying editor they are using, is: https://prosemirror.net/
lambda··on Building a Text Editor for a Digital-First Newsroom
This is discussing one that you already had on your list; ProseMirror. In fact, you've had it on the list since 2015: https://gist.github.com/manigandham/65543a0bc2bf7006a487/429...

This is talking about using ProseMirror to build some more features into their CMS, but it sounds like more of just a use of ProseMirror rather than a new editor entirely.

lambda··on Building a Text Editor for a Digital-First Newsroom
Why are they gifs instead of mp4s? Yikes. Also, since they are screenshots without a lot of movement, they really should compress better than that even as gifs.
lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
I found TinyCards to be good for some things, like drilling on kana, but I find that the extra context provided with full sentences and different types of exercises in Duolingo to be better long term. But maybe I haven't found the right card decks in TinyCards yet.
lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
Looks interesting. I think I'd have to be a lot more dedicated to that, and need some other resource for learning grammar, vocabulary, and testing complete sentences.

The nice thing about Duolingo for, say, French is that I can kind of mindlessly do it every day to keep my skills up and improve my vocabulary, and then do smaller bouts of studying using other methods to improve actual fluency.

But with Japanese, Duolingo just doesn't work very well, and just learning kanji with WaniKani would miss all of the rest of the context, so I'd need something to pair with that for learning the rest of the language. Any recommendations on good resources for learning the actual spoken language to go along with WaniKai?

lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
The Japanese lessons are listed as being in beta.

But yeah, I think they're going to have to do a pretty complete revamp of the Japanese course, and possibly add some more features like handwriting recognition for learning the characters. I did a little of that on my own, putting together a flash card deck that I could type in Japanese in, and used Android's Japanese handwriting input method to enter characters, and found that pretty good for learning kana, but I didn't feel like putting all of the work in for building such decks for the kanji I was learning as well.

I find Duolingo much better for the lessons that are more well developed, and which the software was originally written for, like French. I think that they could eventually get to the point where the Japanese lessons are useful, but now is not that point; they will need both some software updates that make Japanese learning work better, and a revamp of the curriculum.

lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
I had taken some Japanese in high school, and French in college, and later done some Duolingo to try to brush up my French, but then abandoned it.

I recently picked it back up again (couple of months ago), and tried doing both Japanese and French. I find the French one much more helpful. The Japanese module is still in beta, and it shows; tapping on one word to look them up if you don't remember them doesn't work well in Japanese but it works fine in French.

And yeah, I found the Japanese curriculum pretty lacking, and the kanji really hard to learn in this format.

I did find an interesting way to practice my hiragana and katakana, though. I created a slide deck using Tinycards (Duolingo's flash-card app, I found it a lot easier to set up and use than Anki even if it's less powerful) in which I would have to write the kana using the handwriting input method for Japanese. I found that actually trying to write out the characters was way more helpful for remembering them then just clicking on the right one out of a list.

However, I couldn't figure out a good way to get Duolingo to give me a list of the kanji I was supposed to have learned by now to use that with kanji, and figured it would be too much of a pain to go back through all of the lessons, write all of that down and then create the flash cards manually from that.

I've quit with the Duolingo Japanese lessons by now, I think I want to wait until they're a little more fully baked, and even then I'll probably need some other outside resources to study along with.

I think Duolingo in its current form is a good way to stay practiced with a language and learn some vocabulary and grammar, but only for some of the languages. However, even for those languages, you will need some other resources to really develop fluency.

lambda··on Duolingo Suddenly Has Over Twice as Much Language Learning Material
Hmm. Those all seem like fairly basic words to know; OK, maybe "spider" isn't as common a word to need, but it is something that comes up in conversation sometimes. That particular phrase isn't one you're going to have to say very often, but I'd say it would be pretty hard to say you're fluent in a language if you don't know those words.

I've been doing Duolingo for French for the past few months, trying to dust off the couple of semesters of French I took in college and get a bit beyond that to maybe get to the point where I can get by. Yes, there is a bit skewed towards things like family relationships, clothes, the house at the beginning; things that might be important if you're living somewhere but possibly less important if you're just visiting. But they are always adding new content, and as the original article points out they just did a revamp to give access to a lot of newer content they hadn't provided access to before.

I don't know; a language generally has a huge amount of vocabulary, as well as grammar to learn, and you need to learn it in some order.

The main thing I do find lacking is that it's pretty much all translation or transcription of simple sentences, or word matching. I do find these helpful for learning vocabulary and grammar, but they aren't going to lead to fluency. The article does mention that something that they are working on is longer listening comprehension exercises, which I think would help out with that a lot.

lambda··on Fuchsia is not Linux
No idea about the latency guarantees or scheduling. I've mostly just read and summarized some of the overview docs, and there's been nothing written on scheduling or latency that I've found yet.

It looks like the isolation of different applications, and capability based security, is pretty baked in. There do seem to be some TBD parts, like right now just like on Android apps can either have access to all of /data or none of it, and fixing that is something they list that they want to do but haven't yet.

lambda··on Fuchsia is not Linux
I just checked out their third_party/curl repository, and here is the full diffstat from the upstream they based it on:

  $ git diff --stat origin/upstream/master origin/master
   BUILD.gn                         |  438 ++
   include/curl/curlbuild.h.fuchsia |  198 +
   lib/curl_config.h.fuchsia        | 1034 +++++
   src/.gitignore                   |    1 -
   src/tool_hugehelp.c              | 9000 ++++++++++++++++++++++++++++++++++++++
   5 files changed, 10670 insertions(+), 1 deletion(-)
This adds a build file for the build system they use, and a couple of the config files that would normally be generated by the configure script but presumably the configure script doesn't support Fuchsia, along with an auto-generated source file containing the help output.

So it looks like they have had to make zero actual source changes to cURL; the POSIX compatibility layer and setting the appropriate defines in cURL's config files are sufficient.

lambda··on Fuchsia is not Linux
It looks like while the core kernel and a lot of components are written in C++, there are a number of components written in Rust: https://fuchsia.googlesource.com/garnet/+/master/Cargo.toml

One of the advantages of a microkernel architecture is that it is relatively easy for different components to be written in different languages.

lambda··on Fuchsia is not Linux
Yes, this is exactly what I was getting at.
lambda··on Fuchsia is not Linux
But this is how Fuchsia is as well; these handles are pretty much equivalent to file descriptors, except for how they get numbered/allocated (though for C library compatibility, there is a per-process file descriptor table to map between file descriptors and handles).

Even on UNIX like systems, you can't read or write on every file; for instance, you can open directory, but you can only readdir on that, not read from it. But they are still file descriptors like everything else, so you can call dup(), fstat(), pass them between processes on Unix sockets, etc.

There are plenty of other operations which can only be done on certain types of files in UNIX-like systems; for instance, you can only recv() or recvmsg() on a socket.

The difference is that in Fuchsia, more things have handles, and so more things can be treated consistently. For instance, jobs, processes, and threads all have such handles; so instead of getting a signal that you have to handle in an extremely restrictive environment in a signal handler or having to call wait4() to learn about the status of a child process, you can just wait on signals to be asserted on the child process using zx_object_wait(), which is the equivalent of select() or poll(). This means no more jumping through hoops to get signal handling to work with an event loop; it just works.

Of course, the other difference in Fuchsia is that there is not a single namespace. Every component in Fuchsia has its own namespace, with just the things it needs access to; there is no "root" namespace. This is good for isolation, both for security reasons and reducing accidental dependencies, though I do wonder how much of a pain it would make debugging and administering a system.

lambda··on Fuchsia is not Linux
Google has the advantage of having two consumer platform (Android and ChromeOS) running on Linux, but with the majority of application code written on top of additional abstractions on top of Linux so a lot of it would still run if the appropriate runtimes were ported over to Fuchsia.

Google is also developing Fuchsia openly, if quietly, giving developers a preview of where they are going. Microsoft developed Midori mostly in secret, and while we've heard a little bit about what they did in that project from blog posts and Twitter threads, nothing official has ever been released publicly.

And on the server side, virtualization and containerization are huge and growing, as many people find the benefits in flexibility, repeatability of deployment, and incremental billing to outweigh the absolute overhead over bare-metal performance. Fuchsia seems to support virtualization as a core part of the API, allowing you to run Linux VMs when you need to, and it could be possible to port containerized applications piecemeal to Fuchsia with some components still running on Linux on co-located or even the same hardware.

I feel like this is one of the benefits of the relatively simpler POSIX style API design, and extensive use of sockets for IPC, over the fairly complex, heaviweight Win32 API and NT kernel. I feel like a lot more software that runs on Linux (and is generally portable to several other POSIX-ish OS's) would be a lot easier to port to Fuchsia, and in an incremental way, than all of the software that runs on Windows systems would be to port to Midori.

lambda··on Fuchsia is not Linux
> Hacker News commenters are not the ones making baseless claims about how their product is better than the current market dominator.

Where did anyone say that Fuchsia was better than Linux?

The title of this document, "Fuchsia is not Linux", is a play on the "GNU's not Unix" backronym for the GNU project, as well as being a way of pointing out that unlike Android, Fuchsia is an entirely different kernel.

I mean, obviously they would write it because they thought it would be better for certain applications than Linux, or better for trying out new ideas, or the like, but I don't see anything claiming that Fuchsia is better.

In fact, Fuchsia has been done as a pretty low-key project for a while, slowly opening up parts but without much fanfare, just repositories being available, and slowly posting more documentation like the link in the OP. I don't really see very much marketing about it, just low key releases of code and more technical information to give people a taste and show the direction they're trying to go in.

lambda··on Fuchsia is not Linux
Yes, I agree that using the handle to install an ambient clock is probably better than just having one exist, for the reasons you cite.
lambda··on Fuchsia is not Linux
Why? The "Better C" subset of D is not memory safe, which is one of the main reasons for suggestion Rust over C++ as an implementation language. What does D offer you over Rust in this case? Better metaprogramming facilities? Is that something you really want to rely on significantly in a microkernel?
← PreviousPage 20 of 34Next →