10 ms·
Show HN: Breach – A modular browser built on Chromium and Node.js
- portmanteaufu 12y agoNeat project, but the marketing's a little disingenuous. It's not "entirely written in Javascript", it's a Javascript layer on top of Chromium, an enormous codebase written in C++.
- spolu 12y agoEntirely right! :) It's pure Javascript on top of the ExoBrwoser which is a thin layer of C++ on top of NodeJS + Chromium Content Module.
- timdorr 12y agoIt should be "Show HN: Breach – A new browser UI written in JavaScript"
- cr3ative 12y agoThank you for distilling it. This makes a lot more sense.
- dang 12y agoWe changed it to that. Thanks for a perfect (because minimal and neutral) HN title edit.
- spolu 12y agoIn that case you may maybe add the modular adjective to better convey the fact that it can be used to build new UI easily: Breach - A new modular Browser UI written in JS ?
- spolu 12y agoI would also add that this means that Opera is a Browser UI :)
- spolu 12y agoThe post had a couple title edits which is fine but the last edit is really diminishing the impact of the whole project: "Show HN: Breach – A new browser UI written in JavaScript" I appreciate that Breach is not entirely written in JS, but it's as much a browser as Opera is and qualifying it of a "Browser UI" does not convey a realistic image of the project. Maybe we could edit the title again to something like: Show HN: Breach - A new modular Browser built on top of Chromium/NodeJS
- serge2k 12y agoJavascript except for the millions of lines of C++ code that make up the actual browser (chromium embedded using the content api). Cool hack though.
- Artemis2 12y agoThe idea is great, but in a world where browser performance is a competition, writing a web browser in Javascript might not be the best. The interest here is learning, and it looks like Breach is very good on this point.
- todd3834 12y agoThe heavy lifting looks like it is done with Chromium so the parts implemented in Javascript shouldn't be a problem if they are done well.
- spolu 12y agoIndeed all the rendering is of course taken care of by the Chromium Content Module. Javascript mainly orchestrate the UI.
- OutThisLife 12y agoI'm not a browser expert, so please enlighten me on this. How can it be named "A new browser written in JavaScript" if it's not actually entirely JavaScript?
- todd3834 12y agoDo you consider Chrome on iOS a browser, isn't it just a wrapper around the UIWebView?
- LocalPCGuy 12y agoI don't. It's just a wrapper around UIWebView.
- Orva 12y agoYeah, just like Firefox which is pretty much Javascript and XUL on top of Gecko :)
- deleted 12y ago[deleted]
- skrebbel 12y agoI'm trying to put this as constructively as I can: Proudly dismissing Windows on the second line of your copy makes me not want to take you seriously. There's nothing wrong with not supporting certain platforms, but bragging about it makes you seem a bit snobby. EDIT: And I'll grumpily admit that this also bugs me because Windows is me favorite OS and Breach looks like a thing I would actually use. I hope its just circumstance. And not some goal in itself to not support it out of some far fetched principle.
- angersock 12y agoI'll take it a step further--it usually indicates to me hipster script-kiddies that don't know how to properly support multiple platforms beyond pasting together makefiles from Grandpa Google. EDIT: Downvote all you want--how many times have you had to deal with packages that magically only build on Windows, OSX, or Linux? Or only on a particular version of Ubuntu?
- spolu 12y agoHehe, in that case, it also means writting a substantial amount of code specifically targeted to Windows...
- angersock 12y agoSuch as? I'm pretty sure Chromium and Node build just fine. https://github.com/joyent/node/wiki/installation https://github.com/joyent/node/wiki/installation http://www.chromium.org/developers/how-tos/build-instructions-windows http://www.chromium.org/developers/how-tos/build-instruction... EDIT: https://github.com/breach/exo_browser/wiki/Building-the-ExoBrowser https://github.com/breach/exo_browser/wiki/Building-the-ExoB... What else am I missing from your package.json?
- spolu 12y agoWithin the ExoBrowser to open a window and install web view controls
- o_____________o 12y agoLoaded initially, installed mod_strip, crashed, now crashes upon load. OSX 10.9
- xyclos 12y agoI'm running OS X 10.9 as well and have no issues.
- jack_jennings 12y ago+ 10.7.5 opened an issue with stack trace here: https://github.com/breach/breach_core/issues/59 https://github.com/breach/breach_core/issues/59
- emehrkay 12y agoI am getting the same issue. I used AppCleaner to delete the app and any supporting file. It ran again, but crashed at the exact same spot. I'll try on my iMac
- knodi 12y agoO no, not more javascript. I need less javascript in my life not more.
- jacob019 12y agoWas hoping to find a JS interpreter written in JS (like pypy) with browser on top.
- Excavator 12y agojs.js¹? Also, take a peek at repl.it if you haven't already [1] https://github.com/jterrace/js.js/ https://github.com/jterrace/js.js/ [2] http://repl.it/languages http://repl.it/languages
- OutThisLife 12y agoNeat, wish I could test on Windows. I'd love to see the performance.
- romanovcode 12y agoYou would probably be disappointed.
- shawnz 12y agoWhat about this doesn't also apply to Firefox? It too is open source and modular, and also written in Javascript (though combined with XUL rather than HTML, and using Gecko instead of Webkit).
- spolu 12y agoIt does apply indeed! We went one step forward and didn't provide any functionality to the browser to make it entirely built out of modules. And we did it on top of Chromium Content Module. The basic motivations are totally the same. I also believe that is's probably way simpler to rewrite an entire web browsing experience on top of Breach.
- swift 12y agoThat was my reaction as well. I was pretty interested to see a browser genuinely written entirely in JavaScript, which would at least be a new thing. Since it seems like the developers are posting in this thread, could you talk a little about the differences between Breach's approach and Firefox's? I suspect they must exist mostly in the node.js layer - which tasks is that layer responsible for? (Edit: I see you replied to the parent comment while I was writing this one. =)
- spolu 12y agoI've detailed a how we ended up building Breach as it is in the introduction of that page: http://breach.cc/hack http://breach.cc/hack Basically, the idea is to take the Chromium Content API and expose it to JS (that's similar to Firefox). Doing it we figured, why not add some APIs to do interesting stuff in JS as well... and that's how we embedded NodeJS and exposed the Content API within a NodeJS tread.... So you have access to all the nodeJS modules while building your own modules for Breach... makes it fairly convenient :)
- Excavator 12y agoHow do you define "genuinely written entirely in JavaScript"? Is it covered by something like links/lynx in a JS based RISC emulator¹ or the Firefox OS web browser app²? [1] http://s-macke.github.io/jor1k/ http://s-macke.github.io/jor1k/ [2] https://github.com/mozilla-b2g/gaia/tree/master/apps/browser https://github.com/mozilla-b2g/gaia/tree/master/apps/browser
- Mikeb85 12y agoCool project. The fact the whole UI and app is scripted/built with JS should make modifying your browser trivial. I like.
- Reich 12y agoYeah I thought the same thing, it should be fun to hack on. There's not much I need that Chrome and Firefox don't already do for me, but trying to write some of the modules myself as well as try some new stuff sounds like it would be a good learning experience.
- mateuszf 12y agoFinally way to fix Chrome dumbified gui and add vertical tabs.
- mkstowegnv 12y agomy kingdom for tree-style tabs with labelable nodes!
- logicallee 12y agoThe only question on everyone's mind: how's its JavaScript support? :) Enough to self-host?
- saraid216 12y agoThis seems oddly relevant: https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript https://www.destroyallsoftware.com/talks/the-birth-and-death...
- spolu 12y agohaha :) Yes... influenced the conception of Breach for sure!
- JED3 12y agoWhile I'm aware of what you're implying by "hackable," that word has horrible connotations when it comes to browsers. I would never want to describe my browser as "hackable." If I were you, I'd consider using a different adjective. Best of luck with the project!
- findjashua 12y ago'Customizable' would be a better choice, especially for non-programmers.
- meshko 12y agoI am still waiting for a browser written in PHP.
- milankragujevic 12y agoI made a mini web browser in PHP. It's command line usage only and doesn't have a GUI and can't display images, only text. Also it's really difficult to click links since you have to type in the link number.
- syldor 12y agoI love the idea of modules, using web tools to hack our own UX should be the standard in future softwares. Great job !
- izietto 12y agoI love the homepage! I like it even if it uses a thin font, which I find less readable. I hope the product to be neat as the website
- dimillian 12y agoIf anyone wondering, work on 10.10 DP3
- stuaxo 12y agoSo V8 was taken from chrome, it is then used to launch chromium which has its own copy of V8 on the inside.
- VogonWorkEthic 12y agoyeah, basically.
- petercooper 12y agoOK, it's not quite the same but last week Robin Berjon wrote "Web 2024" which spoke as if from the future and he said: "This is 2024. In terms of the ecosystem, not only do all browsers have large chunks implemented in JavaScript but at some point someone started a pure-JS browser from scratch. It was initially meant as a joke, but this 'Inception' browser caught the fancy of the ever-resourceful JS community and quickly grew in usability." http://berjon.com/web-2024/ http://berjon.com/web-2024/
- cmiller1 12y agoDid anyone notice that the font they use in the default URL/tab bar is Gotham, the font made famous by the Obama campaign?
- ceejayoz 12y agoIf it is, Hoefler & Co. is going to come after the devs for licensing.
- davidcollantes 12y agoSerious question: how hard is it to sign an OS X application?
- acveilleux 12y ago100$, that's how hard.
- snarkyturtle 12y agoAnybody reminded of Sencha? I don't think any UI should be coded in JS, especially one that's built for the browser. At least Sencha/Ionic et al is targeted for phonegap apps...
- colinramsay 12y agoI think you might need to re-read the link. This is a browser UI and infrastructure (powered by Chromium) written in JS. It's not an app which runs inside a browser, therefore I'm not sure the comparison is useful.
- LukeB_UK 12y agoAtwood's law in effect?
- dufferzafar 12y ago"Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript." - http://blog.codinghorror.com/the-principle-of-least-power/ http://blog.codinghorror.com/the-principle-of-least-power/
- robert_ak 12y agoWhy does it connect to data.breach.cc at startup?
- gigonaut 12y agolooks like that is where it goes for auto updates.
- spolu 12y agoThat's it
- tokenizerrr 12y agoIt took me less than a minute to find the relevant code in their github repository by searching it for data.breach.cc. https://github.com/breach/breach_core/blob/master/package.json#L46 https://github.com/breach/breach_core/blob/master/package.js... & https://github.com/breach/breach_core/blob/master/lib/auto_updater.js https://github.com/breach/breach_core/blob/master/lib/auto_u...
- integraton 12y agoWell, I think this is extremely cool. The concept is great, the minimalist mod_strip is thoughtfully designed, and even as someone who isn't a fan of JavaScript I think it makes a lot of sense in this case.
- fn42 12y agoI like this a lot, the module handling is excellent + certainly brings another level to browser extensions dunno if anyone else had this problem but I had to manually set $CHROME_DEVEL_SANDBOX on arch CHROME_DEVEL_SANDBOX=`locate chrome-sandbox` ./breach
- bdcravens 12y agoPretty sure I'll never suggest to a client that I add "breach" to their software.
- rakoo 12y agoThis is a neat hack on current technologies. Reminds me of uzbl [0] in the separation of modules, each one being good at only one thing and doing it well. What eventually killed uzbl [1] was the difficulties working with IPCs; I hope you overcome this and build something even greater ! [0] http://www.uzbl.org/readme.php http://www.uzbl.org/readme.php [1] http://dieter.plaetinck.be/luamail_a_mail_client_built_into_luakit.html http://dieter.plaetinck.be/luamail_a_mail_client_built_into_...
- TinyTimZamboni 12y agoThis plus github's Atom editor, and I can spend all day working only on Node.js with an html UI. As soon as Node OS is done, I'm set ^.^
- yellowapple 12y agoNext step: kernel programming in Javascript.
- mateuszf 12y agoNext step: cpus supporting asm.js instruction set directly.
- frik 12y agoThere is already ChromiumOS/ChromeOS. Though native linux application support is (still) missing (not the "NativeClient" Chrome API).
- 0x420 12y agoThis is very cool - I just figured out how to shrink the top strip to 25px from its original 45px in about 5 minutes. Very refreshing compared to modifying Firefox.
- spolu 12y agoThat's exactly what we are after. Awesome!
- elwell 12y agoNot the most assuring name for an application I send nearly all my personal data through.
- VogonWorkEthic 12y agoI didn't think it until you said it, but now I totally agree :)
- politician 12y agoAbsolutely love this! Great job, but I'm kind of annoyed that writing breach modules to improve my web experience threatens to derail my side projects. PS- Spell check doesn't work... Module?
- spolu 12y agoCan't wait to see what you come up with! Spell Check would require adding an API to the ExoBrowser... but doable as a module then yes!
- epayne 12y agoExciting! Can you detail how it’s significantly different from node-webkit?
- spolu 12y agohey from breach.cc/hack: The result is an executable exposing a NodeJS REPL with a special API to control browser windows and frames direclty from Javascript. Some people will note the resemblance with node-webkit. Well, the building blocks are very similar but the overall architecture is fundamentally different: here we expose the Content API into a NodeJS context to have the necesary semantics and security model to build a browser using only Javascript code. Node-webkit, on the contrary, exposes nodeJS API within the renderer of a trivial browser (one window, one webcontents view) to make it super easy to build native apps using Javascript code.
- epayne 12y agoThank you! If I am understanding correct then the tl;dr is: node-webkit is made for building native apps using JS. breach is a web browser made for hacking with JS.
- spolu 12y agoWell node-webkit is made for bulding native apps using JS. Breach is made to build browsers using JS (very different security requirements between a native app and a browser and who tabs interact within it)
- jarpineh 12y agoSince everything in the browser is replaceable and implementable with JS/HTML/CSS then isn't Breach a layer above node-webkit? That is, everything can be changed, so you can write a Breach based app that has no regular browser component in it. I am trying to get a feel if Breach is perhaps more accessible way to do native app dev than node-webkit, which seems to require a lot of boilerplate that is necessary for basic apps. I am a bit confused how Light Table and Atom can implement tabs if node-webkit is only one tab.
- owaislone 12y agoNo HiDPI support :( Damn it.
- magnusgraviti 12y agoLike the design and idea. It is not usable at the moment but I'd like the project to get stable and ready for day-to-day usage.
- dav- 12y agoSeems to be very unstable on Yosemite Beta 2. I tried loading this thread, and it the HTML view froze immediately. I then tried to load up Reddit, and it just wouldn't load. It's a really cool concept, though, I look forward to seeing where it goes. It would be super cool if it became stable enough to be my main browser, because I love the customizability.
- spolu 12y agoHi Dav. Behaves really bad ATM on Yosemite unfortunately indeed :(
- gcb0 12y agoso its like most custom ui android browsers?
- cordite 12y agoOne thing that hit me was typing a URL wrong provided no feedback to me that my input might be wrong (no dns records found, or server not on https, but happens to be on http)
- spolu 12y agoThis is a cruelly missing feature indeed!
- hysan 12y agoIs there an RSS feed for the blog? Sidenote: It's a huge pet peeve of mine when people put up "blogs" without RSS feeds. How are people supposed to follow your updates?
- bevacqua 12y agoUgh! Nothing gets more on my nerves.
- shib71 12y agoI would be very interested in seeing a tutorial for how to build a custom developer tool in this. Something I've been very interested in over the last couple of years is the idea of creating once off, task specific, development and introspection tools. Breach seems like the perfect environment for that kind of thing.
- krrishd 12y agoI'm on Ubuntu 32-bit, and I'm only getting linked to the 64-bit download. Is there even a 32-bit version?
- spolu 12y agounfortunately not at the momemt :(
- hexleo 12y agoEvery companies can build their own browser. It's a good thing for WEB developers. The companies can limit their works internet behavior. For me, may be some day I can use this to build my own browser.
- psawaya 12y agoThis is a great idea. I've wanted to build something like this for a while, but never got around to it. I think people here are missing the point. Firefox and XUL is also a JS-scriptable UI over a browser, but it's a terrible environment to work in. The UI is the main thing that differentiates web browsers. Our tabbed browsers have looked the same for years now. This is going to enable all kinds of awesome experimentation and customization. I'm super excited to see where this project goes.
- spolu 12y agoYou perfectly captured the spirit of the project! :)
- AdrianRossouw 12y agomy main concern is whether this could be used as a more flexible/stable replacement for phantomjs
- ianbicking 12y agoYou should check out the Browser API in Firefox OS: https://developer.mozilla.org/en-US/docs/Web/API/Using_the_Browser_API https://developer.mozilla.org/en-US/docs/Web/API/Using_the_B... Is a similar concept since all apps on Firefox OS are built on HTML, including browsers.
- mateuszf 12y agoThis looks like a perfect core to build a real (no problem with shortcuts like in chrome) minimal browser with vim shortcuts. Sweet!
- dbpokorny 12y agoI suspect that asm.js will obliterate the existing space of web browsers soon. They are bloated dinosaurs from the last millennium. In fact, a "browser-in-browser" project along the lines of jslinux and vim.js, where the entire browser tool chain is emulated (in the browser) is possible. If a browser can be shown to be a lightweight dev tool with integrated toolchain servicing CPython, C, and JavaScript, rather than a glorified porn watching device, then there is hope for civilization. It is really very nice that the source code is available. I do hope that open source will eat Capitalism alive soon. Not to mention copyright law. Right now, the tech industry looks like a bunch of crackpot inventors and psychopath totalitarian wannabes.
- tlrobinson 12y agoIs this satire?
- Kiro 12y agoWhat CSS rendering engine is used?
- apolymath 12y agobut not for windows.... fml.
- waitingkuo 12y agoAwesome! I've just posted this comment in Breach browser!! I hope that I can open a atom editor directly by some short cut (e.g. cmd + m)!
- spacefight 12y agoDownload link via bit.ly redirect? Seriously?
- jannes 12y agoI find the amount of files these JavaScript projects require astonishing. On OSX this app's application bundle contains 4046 files and 1018 directories. Contrast that with Google Chrome wich has "only" 388 files and 577 directories in its application bundle. (a lot of empty directories apparently)
- 616c 12y agoAs a newfound convert to the Conkeror browser, which basically allows you to configure everything through JS and use MozREPL to talk to your browser instance purely through JS, how is this different (notwithstanding the obvious choices in architecture and JS engines)? I mean, it seams like the minimalist JS-run browser has been around for a while (and if not JS, Uzbl did Python as mentioned below, Luakit does Lua). Granted the others do not really run up and down the JS stack, with or without a separate conf language, but I do see this as Conkeroresque. Am I wrong?
- iamtew 12y agoI would like to try this out but it crashes when I try to start it and dumps core. I raised an issue here: https://github.com/breach/breach_core/issues/95 https://github.com/breach/breach_core/issues/95
- alexvoda 12y agoThis feels quite similar to https://mozillalabs.com/en-US/chromeless/ https://mozillalabs.com/en-US/chromeless/ To bad Mozilla abandoned that project years ago!
- joeblau 12y agoIs anyone else having the problem where you resize the window on an rMBP and the whole screen goes blank?