11 ms·
Opossum: Cross-platform web browser written in Golang, optimized for Plan 9
- forgotmypw17 4y agoHas anyone built this? I'd love some screenshots of my website.
- andrewfromx 4y agohttps://i.imgur.com/GPdnYBa.png https://i.imgur.com/GPdnYBa.png Building on mac was easy. It compiled fine with just go. But then to run it I needed: git clone --depth=1 https://github.com/9fans/plan9port.git https://github.com/9fans/plan9port.git cd plan9port ./INSTALL
- liotier 4y agoAt this point in market concentration, any sufficiently brave or delusional soul that ventures into even the most rudimentary web browser development is a hero to me !
- samwillis 4y agoI think what's been achieved in a little over a year with the Ladybird Browser from the SerenityOS project shows that it's quite possible to build a new browser from scratch. And yes, they are absolute heroes for doing it! https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-project/ https://awesomekling.github.io/Ladybird-a-new-cross-platform... https://linus.dev/posts/ladybird-browser-year-in-review-2022/ https://linus.dev/posts/ladybird-browser-year-in-review-2022...
- IshKebab 4y agoIt's definitely impressive, and it shows it is possible to build a new browser. I don't think it shows it is possible to build a new browser that ordinary people will use though. That requires implementing a gazillion niche features that Chrome supports, and compatibility with a gazillion broken websites. Probably with web browsers the last 0.1% is 99.9% of the work.
- cactusplant7374 4y agoI've always associated advanced browser features with power users. Am I wrong?
- Kamq 4y agoThe features they're referencing are JS apis and exact CSS behavior. Web apps are >5MB piles of text, and they have a way of using pieces of browser behavior that you wouldn't expect.
- bityard 4y agoA lot of us would be happy to have a browser that doesn't try to support the gazillion features of chrome and Firefox, if it instead gave us the ability to browse the web on our own terms instead of one company's vision of what the web should be.
- paulryanrogers 4y agoI share the sentiment. Reality is often physical businesses now require visiting their website, sometimes even in person, and they just don't work unless the browser is Chromium based. Literally today I had to upload a drivers license in person yet on my phone to rent a truck. Of course Firefox failed, and even Chrome glitched, yet Chrome could be made to work with it's alternate uploader.
- 0xb0565e487 4y agoBeware of assumptions. You arrived at a funny conclusion here. Did the author express that his intent was to capture browser marketshare? If not, he may not be delusional :)
- 2h 4y ago> At this point in market concentration as others mentioned, some people don't care about market share. the browsers I use day to day (Firefox, Chrome) are honestly pretty bloated and terrible, so I think others would agree that quality wise, users are starving for something better.
- mtlmtlmtlmtl 4y agoI would say the browser ecosystem as a whole is thriving, there's all sorts of browsers for different needs, but most of them are based on the same couple web engines. This looks like an implementation from scratch which is fantastic.
- deleted 4y ago[deleted]
- jchw 4y agoEven though Go is unlikely to be an ideal choice for a web browser, I had definitely wanted to venture into it just as a toy project. Unfortunately, it's obviously an enormous project, so I am absolutely nowhere on it. That said, shameless plug: if anyone wants a reasonably complete but immature ECMA262 parser in Go, I did do that. You can see how (un)finished it is here, with the wasm build: https://cleansheets.io/parser/ https://cleansheets.io/parser/ - source here. https://github.com/jchv/cleansheets https://github.com/jchv/cleansheets The truth is, I'd like to still work on this and even see if it's plausible to build a decent JIT without going too far into the weeds (I wouldn't tolerate a requirement on Cgo personally) but given that I never even pushed up an interpreter (I had an AST-based interpreter, but it was so ugly that I scrapped it :) I doubt I'll get anywhere near Opossum. Oh well. It'd still be fun to at least get some pages rendering. Probably no chance in hell I'd ever get over to milestones I'd actually like to (like booting GMail for example.)
- frozenport 4y agoOr the devil because if they succeed we'll need to check rendering on yet another target!
- userbinator 4y agoAmen to that --- and those who do will quickly lament the state of the "Modern Web"; fuckings to CloudFlare and the like for gatekeeping and calling everyone who doesn't use even slightly non-mainstream browsers or configurations (no JS? Filtering proxy?) a bot. A disappointingly large percentage of sites are behind such walls, and another large number of them are otherwise static content that requires JS to display. But not giving up is the first step to success. I probably wouldn't use a browser in Go either, but as someone who has also been working on one of my own intermittently and knows how much opposition there is, I certainly encourage any attempts at increasing actual browser diversity.
- HyperSane 4y agoA modern web browser is comparable to an operating system in complexity.
- septune 4y agoBuilding a LLM from RFC, W3C specs and billions of websites to generate a web browser engine is no more scifi (but still has to be done)
- tester756 4y agohttp client, UI interactions logic, domain models, utilities like tree operations, browser domain logic and all of that inside single go file? I think you'd make your life 10 times easier by splitting it better
- spenczar5 4y agoWhat difference does that really make? In Go, all files in a directory share a namespace. I think the only impacts of splitting a file are build tags and shortening the import list, and neither really applies here. Those components you listed could be in separate packages, but in a program this small that seems merely different, not better or worse.
- tester756 4y ago>What difference does that really make? Depends if you want to continue developing this (or any) project If you want, then it makes huge difference, the faster you refactor it, then the easier the development will be. If you want to stop putting effort into it, then there'll be no difference. One file doing everything is almost always more annoying than stuff splitted correctly.
- euclaise 4y agoNot just for continuing development in general, but it would be nice for potential contributors too!
- 2h 4y ago> all of that inside single go file? no, did you even visit the link?
- tester756 4y agowhat's inside "browser.go" then?
- 4y ago
- spenczar5 4y agoI fully acknowledge that Plan9 had a cool vision, maybe a superior one to the world we’ve got. But is it practical as an operating system for day to day use, particularly when working with other people using conventional Linux/Mac/Windows?
- johnnyjeans 4y agoAs with everything else, it depends on who you are and what you do. Email, typesetting, remote shells are all well within the bounds of what workflows work great out of the box.
- ghostly_s 4y agoTypesetting? the linux-centric FOSS world has failed to produce a serious type-setting application for going on 30 years now, what's the offering here?
- timcavel 4y ago[dead]
- exitb 4y agoThat question makes no sense really. It’s like asking whether camping can be as practical as living in a proper house - maybe for some people, but generally, that’s just not the point.
- 762236 4y ago[flagged]
- pjmlp 4y agoIndeed, we need more such projects to clean our industry from non believers. Alef for Plan 9 was going to be GC based, and even though it went in another way, Inferno and Limbo clearly fix that error.
- bitwize 4y agoGo itself is pretty much Alef 2.0
- pjmlp 4y agoIt could have kept dynamic loading and pick types from Limbo, though.
- butterisgood 4y agohttps://pkg.go.dev/plugin https://pkg.go.dev/plugin but not for all platforms.
- pjmlp 4y agoIt is not the same. Not only it doesn't work in all platforms, they already planned to drop it once, and uses low level dlopen like API.
- mburee 4y agoWhat's the problem with GC? Between C and Go (and maybe Scheme) there's not much choice of languages on plan 9 today. So not having to think about memory management in a browser pet project is surely the best choice when it comes to a relatively ambitious project as this. Also of note, Limbo (the language the successor was written is) is also garbage collected, so it's not like it's against the spirit of plan 9. The predecessor language, Alef, supposedly was abandoned in part because it didn't have GC.
- pjmlp 4y agoCurious to see how they will get WebGL and WebGPU over file handles.
- klodolph 4y agoDoes Plan9 even have hardware OpenGL implementations to begin with?
- pjmlp 4y agoNo, and having a file based driver for graphics also doesn't help that much. https://marc.info/?l=9fans&m=111558695515839&w=2 https://marc.info/?l=9fans&m=111558695515839&w=2
- hummus_bae 4y ago[dead]
- badsectoracula 4y agoOpenGL already has a client/server model (i remember a friend of mine once showing me running some OpenGL stuff from his SGI to his Linux machine... or the other way around, it has been years :-P) and i can't think of anything in WebGL that couldn't work in the same way (though i only used WebGL very little). Sending commands and data over a file handle fits this fine. Note sure about WebGPU though.
- pjmlp 4y agoYes it did, if the only thing one cares about is OpenGL 1.x like performance. X Windows did not come up with shared memory communication and hardware mapping extensions just for fun.
- badsectoracula 4y agoYou aren't going to be sending vertices through the pipe every frame. You are going to be sending commands to create the vertex buffers and upload textures (with the relevant data) and then most of your commands will be referencing those. Which is basically exactly what discrete GPUs already do anyway. IIRC, unlike OpenGL, WebGL doesn't even allow you to do things in another way. What X Windows did isn't very relevant because the use is very different. It'd only be somewhat comparable if the WebGL programs would treat WebGL as a way to stream new frame data for every frame (e.g. video). Also all X Windows communication with clients is done via commands sent through unix sockets which have similar performance to pipes.
- fiber 4y agoCongrats Philip on hitting #1 on Hacker News! Great piece of work!
- eshack94 4y agoSerious question: What is Plan 9? Can someone explain or send me some docs to read? Thank you!
- qbasic_forever 4y agoBell Labs' planned successor to Unix: https://en.m.wikipedia.org/wiki/Plan_9_from_Bell_Labs https://en.m.wikipedia.org/wiki/Plan_9_from_Bell_Labs
- eshack94 4y agoThank you I will do some reading!
- SllX 4y agoSomeone already answered, but as some follow up reading I recommend this collection of documents: http://doc.cat-v.org/plan_9/ http://doc.cat-v.org/plan_9/
- eshack94 4y agoThank you! I'm going to read up.
- olliej 4y agoOh nice, and it’s an actual browser engine not just another chromium wrapper \o/ Good luck to them - we need more actual engines rather than the modern “new browser” model where it’s just whatever Google want in chrome.
- ZeroX-DG 4y agoNice! I'm glad to see more people are interested in creating browser from scratch. Tho like the "OS from scratch" trend, most of those browsers won't be as nearly as performant or complete as those market-leading browsers without ton of work put into it. Making a browser is not a one man job. But it's certainly fun to make a browser! I happen to keep track of the open-source browser projects & resources here if anyone is interested: https://github.com/ZeroX-DG/awesome-browser https://github.com/ZeroX-DG/awesome-browser
- jchw 4y agoWow, I didn't realize so many people were interested in this. I've been wanting to make a hobby browser for a couple of years now but haven't gotten past some basic steps, but seeing this really does make me want to go deeper. If only I had more time. At least I will enjoy checking out other projects in the meantime.
- ZeroX-DG 4y agoYeah I think you should definitely go for it. I was hesitated for a long time as well but decided to just throw myself into it & use it as a learning experience. After about two years, I got myself a very basic browser & ton of useful knowledge about browsers & their quirks. It wasn't an easy journey but I really enjoy it.
- userbinator 4y agoIf you don't care about JS and just want a good hypertext document viewer with decent HTML and CSS support, I think it shouldn't be too hard to beat mainstream browsers on performance.
- ZeroX-DG 4y agoyeah that's true. A hypertext document viewer with decent HTML & CSS support is basically a stripped-off browser so it will almost always have a better performance.
- calvinmorrison 4y ago
- oiiiiii 4y agoROBLOX
- tombert 4y agoSerious question: is anyone here using Plan 9 for daily operation?
- ori_b 4y agoPosted from 9front (using netsurf). I also run https://shithub.us https://shithub.us, which is hosted from plan 9, and more or less needs plan 9 for push access. It uses the hjgit:// protocol for push access, which requires plan9 auth to establish the channel. The fact that there are so many repos up should give a hint at how active the community is.
- tombert 4y agoFollow up question then: why? This isn’t meant to come off as judgmental, but a real question. Plan 9 looks pretty neat but I would think that the lack of driver support alone would make it pretty difficult to run for anything.
- mburee 4y agoThe term is 'recreational computing' ;) But actually most older thinkpads are pretty well supported, you can even get Wifi with OpenBSDs drivers.
- ori_b 4y agoIt's comfortable. And it works with the hardware I own just fine.
- tombert 4y agoFair enough! I've played a bit with Inferno and Plan 9 inside VMs, but never tried to run it full time. Maybe I should give it a go on one of my spare laptops.