52 comments

[ 3.0 ms ] story [ 113 ms ] thread
Ehn, it’s making a UI around a chrome web view (well, electron).

“Making a browser” like this dates back to the early days of internet explorer - windows provided an explorer view (I can’t recall the api name, and it was activex!). But it was fairly close to drag and drop browser creation.

There was an old demo for WebKit where you could make a browser literally with nothing but drag and drop (cocoa bindings made this possible).

Yep.

You can still do something similar in Windows and sometimes it is nice. (I also believe the JDK has a browser component if you want to go cross platform.)

At some point I considered joining together a web view, an embeddable vnc viewer component and some menus to create the perfect tool for the most stupid job I ever held (think manually copy-pasting data into reports that no one ever read but that still had to be completed because of contractual obligations. The only good thing was that it was unbelievably well paid.)

While I tend to agree with your overall sentiment I'd say this is a bit more than just a thin, dragged and dropped wrapper.

I did what you're talking about in the 90's with VB, I thought it would be neat to have a browser with two side by side views. I was learning to write HTML at the time and I found it useful for comparing two versions of the same page.

I think the whole thing had less than 20 lines of code and most of the code had nothing to do with the browser controls accept resizing them when the window size changed.

Anyway, the headline made is sound a lot more exciting but what he's done is still pretty cool. And I like the fact that the reason he did it was so similar to mine, albeit he did it a lot better!

Interesting project, but adding UI to an electron renderer isn't building a browser. It is difficult and beyond my current ability to do well.
According to Wikipedia, a browser is an "application for accessing information on the World Wide Web (...) retrieves the necessary content from a web server and then displays the resulting web page".

Why do you think he didn't build a browser?

Probably because they think that most of the hard work that goes into building a browser -- like parsing sloppy html, handling CSS correctly, a JS engine, etc -- were not done by the author.

To me this feels like like getting a free cheeseburger, adding a leaf of spinach to it, and then saying you built a cheeseburger. But hey, maybe you want a cheeseburger with spinach, and you don't care whether other people think they "built" the cheeseburger or not.

>the hard work that goes into building a browser

... is a gigantic amount of work, indeed.

>like getting a free cheeseburger, adding a leaf of spinach to it

If that cheeseburger was the size of an office building, and your spinach leaf was particularly small.

(comment deleted)
I guess technically he built a browser. There are many browsers out there that just use Gecko, WebKit, Blink, etc. under the hood. Hell, Edge just switched from their own Titan engine to Chromium/Blink.

Building a control around a render is still neat, but it's not baking the thing from scratch.

I think part of the pushback in these comments is that as devs and hackers, a lot of us want to see new rendering engines. Even if they're basic or just render web data differently, it'd be a good change from the narrowing and limited web rendering landscape that's out there.

A developers browser sounds like a really useful idea. The danger is in how deep you integrate into the underlying Electron, and how stable those APIs are.
The title is clearly a bit of marketing, but this is really a great piece nonetheless.

It's not actually about building a browser. What it is about is building an MVP (perhaps unwittingly), scratching your own itch, iterating based on feedback from early adopters, and discovering a niche where there's a lot of value waiting to be unlocked. If only everyone approached building products this way.

it is a horrific rip-off! nobody should spend a penny on this!

20 years ago I put a browser together with 5 clicks using Delphi and gave it away for free, dude.

Your comment is too true, especially about scratching the itch. Looking at the comments on HN first, I expected this to be a tutorial of sorts; I was totally surprised by the content within the post.

Reading the article invoked the sense of wonderment and fun that originally drew me to programming/software development.

Reading the comments on here did nothing but trigger my PTSD and flare up my anxiety. How is it people can be so pedantic and... mean? I don't know what else to call it when someone finds the the time to sit down and write comments that are hundreds of words long that do nothing but tear apart the creations of another person.

Would these commenters also take joy in attending children's science fairs, pointing out that none of them truly discovered anything because they gleaned it all off of books and the internet?

It's such a toxic, unproductive attitude. If even a fraction of the energy that went into writing vile comments on HN was spent writing code, maybe we would have one of these fancy new rendering engines half the people in here are raising hell about.

I dream of new browsers not just built on chromium.
You need to then dream of easy-to-consume foundations besides Chromium.
I feel like this is a missed opportunity for Mozilla. Ten years ago, many new browsers were built around the Gecko rendering engine. Today, it's so tightly bound with Firefox that it's hard to separate out into its own thing.
Dependencies destroy modularity
What? 10 € or 40 € EVERY month just to use a browser? Are you out of your mind?
I could argue either side of that. On the one hand, I can easily believe that that is the real cost of software. On the other hand, it's harder to justify spending money on something when virtually all of the competition is free, unless it's got compelling features or something else that justifies the extra expense.
That's up to how he markets it. If there are people who find value in it, and they buy it, then good for him/her.

Congrats for building something and putting it out there! It doesn't matter that it's not great (or technically interesting). If it provides value to someone, then you did a good job.

"How I built my own browser, starting with nothing but a browser"

Next up: how I painted my own Impressionist masterpiece, starting with nothing but a high-resolution camera, access to a museum, and an inkjet printer; how I wrote my own operating system, starting with nothing but Linux (ahem, https://gitlab.com/kragen/bubbleos doesn't have a kernel yet); how I built my own sports car, starting with nothing but a Lamborghini.

Claiming that you've written "a new web browser" because you've stuck your own URL bar and tabs on Blink is absurdity bordering on fraud, like claiming that Shiva Ayyuradai "invented email", that tempered glass ovenware is "pyrex", that physics and chemistry are "not philosophy", that submicron gold particles are "nanotechnology", or that Ayn Rand is "a philosopher". It's the kind of claim that can only survive by redefining a decades-old term to mean something much more trivial.

Reminds me of when I started programming WinForms apps in C#, and one tutorial was about "building a web browser". Sounded super cool! Except the first step was "drag WebBrowser into the form". Yeah, that's not a new web browser, that's some buttons to control IE.
Hehehe. Good times. Really liked WinForms when I was starting C#; Its ease of use was never replicated again with newer tech like WPF, due to the inherent complexity of WPF compared to WinForms;
Does this comment have to come up every time someone builds a browser chrome with an existing engine?

The chrome is what makes it a “browser” — ya know the tooling that’s lets you browse web pages with a url bar, keyboard shortcuts, tabs, windows. The thing that people have extremely strong preferences about and are what constitutes almost the entire identity of a web browser.

“How I build my own file manager with nothing but a filesystem.”

(comment deleted)
> Does this comment have to come up every time someone builds a browser chrome with an existing [browser]

Only when they claim it's their own web browser, because that's a claim that deserves ridicule. Experimenting with the chrome on browsers is a praiseworthy and worthwhile activity, just different from writing new browsers.

> The chrome is what makes it a “browser” — ya know the tooling that’s lets you browse web pages with a url bar, keyboard shortcuts, tabs, windows. The thing that people have extremely strong preferences about and are what constitutes almost the entire identity of a web browser.

I don't think so, no. Some interesting differences between browsers might include:

1. Is it compatible with Slack?

2. How many megs of RAM does it need to run Slack?

3. Does it pass the ACID test? (Substitute modern equivalents.)

4. Does it support current ECMAScript, or does it require me to recompile my code to an older version?

5. Is it vulnerable to Google inserting malicious code into the next version to remove functionality I depend on?

6. Does it include the vulnerable code in the CVE that was just disclosed in WebKit, or am I safe without risking an upgrade?

7. Can I run it in a terminal?

8. Can I recompile it for the 68000?

9. Does it have new, possibly experimental features like freezing the execution of a page to save battery, WebAssembly, the Tcl/Tk plugin, PDF rendering, TeX rendering, or SQLite access?

10. How fast is it?

11. How well is it protected from cross-site cookies and paywalls?

12. Can it archive the version I'm looking at of this page, or am I vulnerable to the New York Times silently editing their article after the fact?

13. What protocols can it access data over — can it do Gopher, dat:, or BitTorrent?

All of these except #13 have everything to do with the browser engine and nothing to do with what the URL bar looks like. There must be some people whose preferences about their browser's keyboard shortcuts are stronger than their preferences about things like whether it runs the web apps they need to use, but I haven't met any of them.

> Only when they claim it's a web browser, because that's a claim that deserves ridicule.

It is a web browser! The name Google Chrome is play on the fact that it used to be "Google's chrome on WebKit."

The actual UI for the browser is where all the interaction is! Saying that the chrome for a web browser is "what the URL bar looks like" is absurd. All of the differentiating features of web browsers are in the chrome -- bookmarks, extensions, shortcuts, sync, profiles, container tabs, sidebars, application windows, developer tools, search.

It's true that those minor details are the things that distinguish different bits of chrome stuck to the same browser, but that isn't where all the interaction is; almost all of the interaction is with the DOM of a web page. That's why Google Chrome is called "Chrome": not because it was Google's chrome on WebKit, but because the conception was that the browser (any browser), and for that matter the operating system, was really just chrome around a web application.

It's not true that those minor details are the things that distinguish actually different web browsers, such as Gecko (to clarify that I'm not talking about iOS "Firefox"), IE7, IE8, IE9, WebKit, Blink, Konqueror, Lynx, Links, Dillo, Netscape 3, Netscape 4, and so on. Yes, there's a fuzzy line: were early versions of Chrome "the same browser" as Safari (because they used WebKit) or "different browsers" (because they had their own JS engine)? Different browsers, I think, but it's debatable. Were Firefox 3 and Firefox 45 "the same browser" or "different browsers"? The same browser, I would say. But the existence of gray areas like that doesn't mean that there are no black and white cases, like this one.

Did I mention I'm an accomplished musician, capable of playing world-class music in many different styles? My favorite instrument is the CD player, although sometimes I also play the MP3.

If you give a Chrome user Chrome but with Gecko for rendering almost nobody would notice, most tech folks probably wouldn't even notice. But swap that around and give a Chrome user Firefox but using Webkit for rendering, everyone single user would notice.

The average user does not care one bit about the rendering engine, and likely doesn't even conceive of their browser having that moving part. That's the whole reason why "browser" and "rendering engine" are not the same thing, because one is the application and the other is just a single component of a larger application. If Firefox switched to Servo but left everything else the same, nobody is going to demand they rename the browser, because only a single component was changed. The entire rest of the browser would be intact and still identical in form and function.

The amount of conflation of rendering engine and browser application in this HN thread is unbelievable.

1. Lots of people empirically don't notice the difference between using Linux and using Microsoft Windows. That doesn't mean they're the same operating system.

2. Chrome users will definitely notice if you give them Chrome but with Elinks or Dillo for rendering. Also, upthread I listed 12 differences Chrome users might notice with Gecko; although they might not, for example, understand why their browser was using so much less RAM, they would definitely notice the difference.

Doesn't seem that scathing of a criticism.

I'd consider Beaker Browser (https://beakerbrowser.com/) to be its own browser even though it's "just" an Electron app. Brave is another example: it's "just" Chromium. Or Firefox and Chrome on iOS: just Webkit wrappers.

You can come up with your own completely novel UI on top of a browser that is indistinguishable from "your own browser" to the end-user. Mincing words with implementation detail just seems like a tired "well actually" HN gotcha.

Both the Beaker Browser and Brave offer new functionality that go well beyond adding some buttons.

> You can come up with your own completely novel UI on top of a browser

Not if it's Blink or WebKit; they want to draw stuff with pixel-perfect control.

> that is indistinguishable from "your own browser" to the end-user

In https://news.ycombinator.com/item?id=22359642 I list 10–12 ways that even Beaker or Brave are distinguishable from "your own browser".

> Both the Beaker Browser and Brave offer new functionality that go well beyond adding some buttons.

In what way does the browser in the article not offer new functionality? The entire reason it exists is to offer functionality not found in typical browsers.

> Beaker Browser (https://beakerbrowser.com/) to be its own browser even though it's "just" an Electron app

The Beaker Browser actually supports other protocols than just HTTP(S). I think it's fair to be frustrated that the person in question didn't implement the engine at the core of it.

That being said, I disagree with the criticism in the parent poster -- the interface seems to be sufficiently novel enough to warrant interest.

(comment deleted)
Title seems misleading. Maybe "How I built a custom browser with Chromium"
Nice! I've been investigating doing something similar myself, as it's proving very hard to find an an acceptable modern browser.

Too bad about using Electron, but I guess I understand why that choice was made.

I found it wasn't too hard to do with Chromium Embedded Framework + Qt [0], but you do have to use C++ which the Op stated fear of. I am no C++ expert and I worked through it though. I did have to reinvent stuff like ad block, auto-completion URL bar, etc but it wasn't bad.

[0] https://cretz.github.io/doogie/

Fortunately, I'm a C/C++ expert. But, to be honest, if I were OK with using Chromium Embedded Framework, I'd just use one of the Chromium-based browsers instead.

The renderer is the hardest part to build, so I'm looking at using an already-established OSS one. Fortunately, I don't need anything fancy in the renderer, so there are plenty of OSS options I can use.

Another interesting related thing is Decaf https://github.com/timbaloney/decaf

It is a webkit fork (not electron) that allows you to run ruby in your browser. Hasn't been updated in a while but it used to work.

It doesn't really count unless you're writing your own rendering engine.

It's like saying you built your own operating system than in reality is just another Linux distribution.

(comment deleted)
The fact that it is so hard to make a full browser from scratch is why we got a Chromium monopoly. Everyone wants to be free of Chromium but no one puts up the effort as it is easy to just embed the Blink engine. Gecko is the sole major exception to the rule.
Hey Killian! Awesome project.

Unrelated: I was saddened to see on your website that Guitaryst was no longer around! Thank you again for your early support at Djangy ;)

And yet another browser built upon Google instead of Mozilla tech. I don't know what their game plan is, but if it's giving way to Google in the dev space, they're doing a mighty fine job.