33 ms·
Ladybird: A new cross-platform browser project
- pvsukale3 4y agoCongratulations and best wishes to Andreas and his team. His work is very inspiring. My question as a systems programming newbie: Could a compiled binary of this project with HTML and CSS be used to create cross platform apps like Electron?
- selfhoster11 4y agoProbably. The Chromium browser engine first had to be turned into Electron, so there is no reason why you couldn't do the same here.
- actuallyalys 4y agoThe original LibHTML commit makes it sound like it was originally intended for embedding, so I don't see why not: https://github.com/SerenityOS/serenity/commit/a67e823838943b31fb7cea68bd592093e197cf16 https://github.com/SerenityOS/serenity/commit/a67e823838943b.... Electron has affordances beyond just being a web view, so you would have to add those (or work around not having them).
- niutech 4y agoYes, it should work. There are also cross-platform alternatives: Sciter and Ultralight.
- LeFantome 4y agoThe SerenityOS project builds everything from scratch. In addition to “fun” they have made a very interesting argument about this. Ladybird implements its own HTML parser, CSS renderer, TLS layer, JavaScript engine, WASM VM, and even its own font rendering. As if building a browser from scratch was not hard enough, why not re-use some existing libraries as some comments here suggest. Andreas had countered that he finds it slower and more difficult to work with a typical Open Source project that uses many libraries authored independently. In SerenityOS, if you want a feature or find a bug, you just make the change wherever required and check it into Git. This is true even if you make changes to multiple sub-systems at once. You have access to everything. In a more typical project, you may have to work around bugs in layers you do not control. You may be completely blocked by missing features. The standard argument is that you can just add it yourself but, as he points out, you may have to wait months for your changes to be incorporated and they could even be rejected. You can fork stuff but having to maintain a foreign code base written for different use cases using different philosophies is no fun. If you have to maintain it, why not write it the way you want. Anyway, he argument is that for large, complex projects, it may actually be easier to write things from scratch than to try to cobble together a basket of independent dependencies. There is something to be said for this perspective in my view. His progress with SerenityOS seems to support the argument. At a rate, I am hopeful they can succeed and certainly wish them luck.
- markdog12 4y agoMy favorite part: > Q: Why bother? You can’t make a new browser engine without billions of dollars and hundreds of staff. Sure you can. Don’t listen to armchair defeatists who never worked on a browser.
- Cthulhu_ 4y agoArmchair defeatist here: Browsers are huge, complicated beasts, the standards are a constant moving target, and websites won't uphold standards. I wouldn't be surprised if 80% of the work spent on current webbrowsers is spent on maintaining compatiblity and edge cases.
- A4ET8a8uTh0 4y agoIt is true, but it does not change the fact that it is a worthwhile effort just to force some level of differentiation on the browser scene.
- godshatter 4y agoI was happy to see them state that influence over their browser cannot be bought. Mozilla taking $400 million+ a year from Google is the elephant in the room when it comes to browser competition. Not to mix metaphors, but this would give us a large competitor not beholden to Google, the gorilla in the room.
- cfcosta 4y agoYes, they are. And even if the project fails (for any definition of failure), putting hundreds of people in contact with production quality core browser code is worth it. Also, lightweight browsers have been a dying breed for a while, if ladybird ends up as a more modern alternative to surf and Dillo, I'm already satisfied.
- rollcat 4y agoSurf[1] is merely a Webkit wrapper. If you mean NetSurf[2], it's actually doing OK in resource constrained environments, although it's been a while since a release, which is a bit concerning. [1] https://surf.suckless.org https://surf.suckless.org [2] http://www.netsurf-browser.org http://www.netsurf-browser.org
- bejd 4y agoWhile common knowledge says that building a new browser is "too big, too hard", I'm excited that some intrepid people are tackling this problem and wish them success!
- LeFantome 4y agoThe SerenityOS project is managed with tremendous pragmatism and so I think they can get there. If you watch his first Ladybird video after the project announcement, it is just him saying that he has spent the day getting Reddit to look right. He records the hour or so that it takes him to make CSS font emblems render properly. It is a priority because they appear on Reddit. The video that brought SerenityOS the most fame was probably him porting Diablo ( well, DevilutionX ) to his OS. When he encounters a missing function from his C Standard Library, he simply adds it. He is very driven by practical usability. He wants an OS written from scratch with a full suite of software that he can use as his daily driver. So, he needs a web browser. He needs one that properly renders the kinds of sites he visits. Simple. Compare this to projects like ReactOS that resist even adding support for a working browser.
- orangecat 4y agoYes. I mostly agree with the common knowledge, but am glad someone is putting it to the test. We'll learn from either their success or failure.
- ArrayBoundCheck 4y agoWhen it comes to common knowledge in programming it's more often incorrect. I still see people telling experts they shouldn't use global variables, that you can't beat the optimizer, that you should use a library (for something as trivial as left pad) etc
- keyle 4y agoThat made my day. Go ladybird!
- webmobdev 4y agoLet's hope this gains some momentum. Also see http://www.netsurf-browser.org/ http://www.netsurf-browser.org/ - another neat project working to create their own browser engine that has made good progress.
- ainar-g 4y agoTo those who want to try NetSurf on Ubuntu, I recommend installing from Flatpak. The default Ubuntu package seems to be broken on HTTPS sites; or at least was when I checked it the last time.
- euclaise 4y agoI use netsurf on my Sony Vaio P, it's the best it can run
- anthk 4y agohttp://links.twibright.com/ http://links.twibright.com/
- the100rabh 4y agoWe need to have another web browser. I just hope it really solves problems than being just another alternative like openoffice. More power to you.
- rhdunn 4y agoI've been watching his YouTube videos on developing the LibJS and LibWeb components. They are interesting and show that this kind of thing can be done. As a larger point, it is important to have multiple web stacks so that no one player can dictate what the web should look like, or gate access through that stack. Having this new stack grow to the point where it is becoming a viable alternative is great to see.
- ArrayBoundCheck 4y agoWhat does noone can dictate mean? Google dictates it and I've ran into many many sites that doesn't function with firefox or anything other than chrome
- heywire 4y agoGot any concrete examples? I hear this a lot, but have never experienced it. I’ve been using Firefox as my primary desktop browser for years now. I can’t think of any website that didn’t function. But maybe I encountered one and just thought the site was down?
- LeFantome 4y agoMore than once I have spent precious time filling out some form or going through some wizard only to find that I cannot “submit” or that validation is failing on some field or other in Firefox. Switching to a Chromium based browser works. I know it has happened to me at my bank. I cannot recall exactly where else. Reservation systems? A couple of travel approval sites I think ( during COVID ).
- bityard 4y agoIn my case: several financial institutions that I have accounts with and lots of enterprise apps and gear with web UIs either break silently, have certain functions that don't work, or block with an error telling you to use a supported browser. (If they're nice, they even tell you which ones are supported.) For a while, Slack didn't support all features on Firefox despite the technology being there, I don't know if this is still the case.
- yummybear 4y agoI wonder, and this is speaking from virtually no experience in the area, if it would be possibly to use machine learning to infer all the myriads of layout rules (etc.), instead of actually writing to spec
- asddubs 4y agoif you want to completely give up any agency over actually being able to fix concrete rendering problems
- rafram 4y agoNo
- davidatbu 4y agoI'm fairly familiar with ML, and I'd say that's a definitive no. Implementing a layout spec is exactly the kind of thing that is "easy for computers, hard for humans". ML is for things that are "hard for computers, easy for humans" (like, telling dogs apart from cats, or transcribing speech, etc).
- NaturalPhallacy 4y agoMy favorite example is differentiating between blueberry muffins and chihuahuas. :)
- eigenvalue 4y agoYou could probably get something that would work pretty well for most common things but wouldn't have the same behavior in more complex edge cases.
- davidatbu 4y agoI'd bet even that would be only with a some or all of (1) a LOT of training data, (2) a LOT of preprocessing, and (3) using less famous architectures (perhaps recursive neural nets). I say so because (among other reasons) in general, current popular ML architectures (like transformers) count processing heirarchical data as one of their weaknesses. For example, there's a theoretical paper proving that self attention blocks (which are central to transformers) cannot solve arbitrarily nested negation(Ie, resolve not(not(not(true))) to true). Practically as well, we see most times that language models have trouble dealing with naturally occurring double negation in language, etc. But CSS/HTML is, I think, very heirarchical.
- mwcampbell 4y agoTangentially, but on the subject of alternate browser engines, how is Servo doing these days? Has anyone managed to keep that project alive after the Mozilla layoffs in 2020?
- rvz 4y agoInteresting that there is little to no mention of Servo here. The once hyped up browser engine 'Written in Rust™' that was meant to be a revolutionary new alternative browser engine meant to be used in Firefox for its fearless safety features. Yet the entire project headed for the scraps at Mozilla and is sitting somewhere on GitHub with no-one using it. When I see hype around a new browser engine from scratch I am immediately skeptical, unless those 'donations' turn into 'corporate sponsorships'.
- M2Ys4U 4y agoServo was never meant to be an alternative browser engine that would replace Gecko. It was an R&D project and, if you look at the bits that made their way in to Firefox, a fairly successful one. Stylo, WebRender, various parsers etc...
- azakai 4y ago(sorry to post twice on the same topic, but your first sentence is not accurate, see https://news.ycombinator.com/item?id=32813714 https://news.ycombinator.com/item?id=32813714)
- kibwen 4y agoI know better than to dispute Alon Zakai on Mozilla internals, but it remains true that Mozilla's external messaging unwaveringly insisted that Servo was not going to replace Gecko. Even in the later years it emphasized the strategy of gradual replacement of select components.
- azakai 4y ago
- losvedir 4y agoThis is great! SerenityOS comes up on HN quite a bit and I've always been super impressed. Last time, he almost offhandedly mentioned it had its own browser and I thought that was so notable in itself that I started sponsoring him on GitHub. I'm thrilled to hear his goal has become to make it cross platform now!
- dtx1 4y ago
- asddubs 4y agoyeah, that's why I only surf the internet using the ??? browser
- dtx1 4y agoThe Chrome or Firefox Browser where literal billions of dollars and hundreds of developers work to ensure the worst fuck ups that follow from being written in C++ are mitigated.
- asddubs 4y agoand this is a hobby project that isn't ready for real world usage anyway, and they're planning to port it to a memory safe language long term. It's not really a fair comparison, and it's not like this is a project with commercial ambitions anyway.
- deleted 4y ago[deleted]
- jcelerier 4y agoHow much is that due to clinging to old standard and legacy ways of doing things? If I look at my own code which tracks recent c++ standard quite aggressively, between c++11 and c++20 some parts of the code have enjoyed more than a 10x reduction due to the better abstractions, which definitely reduces the amount of bugs and development investment needed. I also don't remember the last time I had a memory leak/error that my IDE didn't show me inline to the code while I was typing thanks to clang-analyzer. Ladybird starts from these 2022 best practices - I'd wager it can reach its goals in muuch less time and engineering than it'd take chrome or FF with their (inescapable, no one wants to let good code go) legacy baggage, both social and technical
- BirAdam 4y ago
- svnpenn 4y agoI am excited for this. However note, builds are not available for Windows, and it is not currently possible to even compile for Windows: https://github.com/SerenityOS/ladybird/issues/33 https://github.com/SerenityOS/ladybird/issues/33
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- userbinator 4y agoGiven that he's already written an entire OS, I don't think he's being too ambitious. It already passes Acid3, which is more than can be said for Dillo and NetSurf, the two other prominent "alternative browser" projects. Those aren't even capable of passing Acid2. The Ladybird browser came to life on July 4th Coincidence or not, that's a great date.
- andrewmcwatters 4y agoAcid tests are not strict standards test suites. You should not be looking to adhere to them.
- bastawhiz 4y agoNo, but they're good signals for the capabilities of a browser engine. Passing Acid3 means you've got a browser that would have been pretty damn good in 2010 or so. It's a good mark of progress for any three month old browser engine.
- asddubs 4y agotwo years and 3 months
- coldtea 4y agoThey're better than strict standard test suites, because they exercize real world useful stuff AND give a fun visual representation of the maturity. Wish we had such "acid test" for later CSS features like Flexbox too...
- andrewmcwatters 4y agoNo, they're immediately provably worse. If you started work on a CSS rasterizer today, there are zero test suites you can use for reference comparison. I'm talking about easy stuff, too, like normal flow, margin, border, padding box alignment. The existing official test suites are entirely manual. Edit: What you're describing requires you to make the entire world first, then finally test something. Here's an example: I want to test the white-space property. How do I test that? Oh also, font rasterizers are all different and standards don't dictate what happens after box layout. It's acceptable that glyphs render with different dimensions. How do I test that? A casual HN reader isn't going to care. Someone actually writing this stuff, will.
- benreesman 4y agoHaha writing a browser is easy! (No, no it’s not at all. Please don’t hurt me anymore.) The worst part is the fucking patent lawyers: https://pdfpiw.uspto.gov/.piw?docid=09576068 https://pdfpiw.uspto.gov/.piw?docid=09576068
- squarefoot 4y agoSure, but how does this affect a browser that is not a product for sale?
- benreesman 4y agoOh almost certainly not. That technique was obsolete ten years ago. I was just showing my battle scars from having had to do a ground-up browser in deference to the magnitude of the accomplishment. Writing a browser was no walk in the park like 6 standards revs ago: I bet it’s a fucking nightmare now.
- nazgulsenpai 4y agoLAME is an LGPL MP3 encoder that you always had to download separately from whatever software used it because of MP3 patent fears. Even if it doesn't create direct financial liability for the creators it can have a chilling effect on adoption.
- andrewmcwatters 4y agoNo, that's definitely not the worst part. The worst part is there is no nice way to convert the abstract language from CSS 2.1, the part that everyone cares about right before JavaScript integration, into a standards-compliant algorithm. Why? Because no definition for it exists. It is left as an exercise to the reader. WHATWG doesn't improve on this either, in fact, they completely leave it out, whereas at least W3C's original work makes it clear that it's descriptive and you need to figure out an algorithm that makes it work. Edit: The section describing the processing model for CSS is non-normative. The authors provide an example flow, but a normative algorithm doesn't exist for CSS.[1] [1]: https://www.w3.org/TR/CSS2/intro.html#processing-model https://www.w3.org/TR/CSS2/intro.html#processing-model
- sprash 4y agoIt's great that this Browser is now independently developed from Serenity OS. But I'm not a huge fan of the QT dependency. You might as well use Qt WebEngine Widgets at this point.
- Deukhoofd 4y agoIt doesn't look too hard to remove that dependency, but then you'd have to write your own cross-platform GUI software, which might be out of scope. Might be a fun exercise though.
- sprash 4y agoWhy does it have to be cross platform? At this point Ladybug does not compile on Windows anyways. Also the target audience is probably mostly using Linux.
- Deukhoofd 4y agoWell, the goal from the article is obviously to make it cross-platform, it's even in the title ;). To achieve that they just wrapped it in Qt. To replace that you'd have to achieve parity for the (admittedly smallish) subset of Qt that is being used. Starting with Linux for that would be a good start, but I'd assume the eventual goal would be to expand to other platforms as well.
- zamadatix 4y agoIt seems to compile on MacOS and Android already so not being on Windows (yet) doesn't really sidestep having a cross platform GUI/events library.
- account42 4y agoAnd what windowing toolkit do you think it sould use on Linux? GTK? Meh. Qt is fine and using QtWidgets is pretty far from depending on QtWebEngine.
- sprash 4y ago
- sylware 4y agoBad start: c++. We have already blink/geeko and webkit in c++. There is no disruption here. To make a real difference, this new web engine should not force ppl to use those grotesquely and massively complex and massive c++ compilers. To bring something really interesting: plain and simple C (not like the linux kernel gcc C dialect) with, if required, some assembly which do not abuse its macro preprocessor.
- asicsp 4y ago>The browser and libraries are all written in C++. (While our own memory-safe Jakt language is in heavy development, it’s not yet ready for use in Ladybird.)
- sylware 4y agoso it is like servo with rust in mozilla... not good omens. hopefully, jakt is written in plain and simple C...
- Deukhoofd 4y agoJakt is bootstrapped with Rust, and they're working on making it selfhosted.
- larvaetron 4y agoThey passed the selfhosting milestone a few months back IIRC
- sylware 4y agoSo, I need a rust compiler, to compile jakt which will compile their web engine which does not really exist currently, only forks of c++ code. To bootstrap the rust compiler written in rust, I would need static binaries of this compiler. The first words which come to my mind is "convoluted and expensive SDK". That said, I have not checked on rust syntax lately to see if it became insane like c++. Last time I had a look, it was not, but it was a long time ago.
- vouaobrasil 4y agoI would be happy to use a new browser as long as it supports ad blocking.
- aeyes 4y agoIt does, here is an old video of Andreas building it: https://www.youtube.com/watch?v=Jc22wPqpaBQ https://www.youtube.com/watch?v=Jc22wPqpaBQ The standard Serenity install even comes with a basic filter list: https://github.com/SerenityOS/serenity/blob/master/Base/home/anon/.config/BrowserContentFilters.txt https://github.com/SerenityOS/serenity/blob/master/Base/home...
- reginaldo 4y agoThe problem with browsers is that they conflate the execution environment, which should be as small, understandable, analyzable, obviously free of bugs as possible, with the common APIs, which as developers we want as rich as possible. An interesting alternative was embassies project[1], which got WebKit running on an understandable computing base. The current-day equivalent would be to get WebKit running on top of, say, WebAssembly and the Canvas API. That would be immense impactful, but isn't as sexy or cool as writing your own browser from scratch. That being said, I applaud the Ladybird initiative. Scratching your own itch is the way to go when aiming for maximum enjoyment. [1] https://www.usenix.org/conference/nsdi13/technical-sessions/presentation/howell https://www.usenix.org/conference/nsdi13/technical-sessions/...
- everforward 4y agoI still think the problem underlying the complexity of browsers is inherent in using HTML/CSS as the base language. Most complex languages get interpreted or compiled into a much simpler format, and the simpler format gets executed. This lets the execution environment be small and understandable, as you said. Using HTML/CSS as primitives means the execution environment has to be complicated, because the execution environment itself needs to be aware of things like whether certain attributes get inherited and how they are inherited. I have hope for WebAssembly + Canvas, because it's a simpler set of primitives. There's a clear boundary between the simple execution environment and the tools that translate complex instructions into simple instructions.
- toastal 4y agoThey also need to handle a lot of backwards compatibility as well as gracefully handling syntax errors
- lowercased 4y ago> as well as gracefully handling syntax errors Do they? Maybe they don't? Maybe we're at a point where people can author html/css, and if there are syntax issues, they just 'break' until someone fixes it. 25 years ago, maybe we needed some laxness, and perhaps today, we don't?
- Razengan 4y agoUnpopular Opinion: Ditch HTML/JS/etc. altogether and invent a new way to create, deliver, and execute ANY content natively on any platform. Replace browsers -and- existing operating systems altogether. —— As of now, in terms of end results for the user, what's missing from the Linux/Mac/Windows GUIs: • Typing something (URL etc) and accessing the latest version of an app, with latest content, and knowing that everyone else in the world is getting the same thing. • Linking to content within apps. What's missing from browsers and the web: Too much to list, but mainly: • Basic shit behaves differently on everywhere website. • Too many artificial restrictions: Can't scroll freely, can't select freely, can't even freely zoom or save images on the most popular image-sharing websites, fuck you Instagram. • I can't save my own data on my own machine, or easily move it between web-apps. Have to go through hoops to even access all your data that the website's company has access to, if ever. • Inefficient usage of your hardware.
- michaelwww 4y ago20 years ago I thought flash would take over. Shows you what I know.
- Existenceblinks 4y agoHTML is ok. Get rid of js. Rewrite DOM stuff, render HTML as more efficient graph mechanism (e.g. virtualized, can have 100k nodes)
- Cyberdog 4y agoObligatory XKCD link: https://xkcd.com/927/ https://xkcd.com/927/ Variety is good. New browsers with new engines are good (though I think an announcement like this without any pre-built binaries for normies to download is a bit premature). I say this as a web developer who well remembers the IE6 struggles of yesteryear - but also fears the Chrome monoculture of tomorrow. UI differences between web pages are annoying, especially when they break things like scrolling and selecting, I agree, but the answer isn't to creatively flatten what the web can be, Big Brother-style. As for Instagram, well, perhaps you should consider making a back-up of your own photos before you entrust them to a service owned by a company whose sole profit model is taking your content and putting ads next to it.
- taf2 4y agoThis is pretty exciting time as we enter into the 3rd phase of browser development. It seems like there are some very interesting paths forward. Arc - via the Browser Company - looks very promising. Brave is an interesting concept to browser the web through another persons servers... There's a lot of ideas and one of these will no doubt become the next Chrome.
- Woodi 4y agoACID3 100% WOW ! Some fuzzing then ready to replace Mozilla ? But it looks like whole WWW ecosystem resembles CVS -> Subversion situation and L.T. -like comments starts to look very sane...
- notpushkin 4y agoAcid3 is not nearly 100% of features you would want to cover in a contemporary browser engine. The author agrees: > we do pass the classic Acid3 standards test, which covers a bunch of basic CSS layout features, and various DOM/HTML APIs. However, the test does not cover many of the features used on the web today (like CSS flexbox, CSS grid, etc.)
- andsoitis 4y ago> Q: Do you have a JavaScript JIT compiler? > No, we have a traditional AST interpreter that is being replaced by a bytecode VM. You can track the LibJS test262 score for both backends here. I’m not convinced that the complexity and security burdens of a JavaScript JIT are reasonable, and given recent developments like Microsoft Edge’s Super Duper Secure Mode, I’m interested in pushing for best-effort JIT-less performance while keeping the codebase simple. Always excited to see new JS engines. I'd be curious to see where LibJS's performance / code simplicity / memory balance tends towards over time.
- zxspectrum1982 4y agoI wonder if a new implementation of JavaScript was needed. My first hunch would have been to try Fabrice Bellard's QuickJS: https://bellard.org/quickjs/ https://bellard.org/quickjs/
- paoda 4y agoIt definitely wasn't needed, but it goes against what I think makes SerenityOS so special. That being that everything in SerenityOS and its several related projects is made from scratch.
- greenthrow 4y ago> If you wish to make an apple pie from scratch, you must first invent the universe. They are using Qt and C++. They have chosen where to draw a line, which is fine, and that line happens to be on the other side of "Javascript Engine".
- sph 4y agoTo be fair Qt is just to create the window on Linux, but all the browser internals are their own.
- greenthrow 4y ago
- llllllllllll9 4y agokling for king! ... the good people of the world love and cheer for you. onwards, while there is life. :)
- philippejara 4y agoHappy to see new browsers appearing. Up to this day I'm still trying to find a good replacement for Conkeror(http://conkeror.org/ http://conkeror.org/), with little luck. webmacs was quite promising for a bit but it just petered off.
- forgotpwd16 4y agoCheck Nyxt (https://nyxt.atlas.engineer/ https://nyxt.atlas.engineer/). Based on WebKit (actually designed to be engine agnostic but WebKit is the only one supported) instead of Gecko, and scripted (also developed) in Common Lisp rather JavaScript.
- inversetelecine 4y agoAnd if you need something a bit more robust and based on up-to-date FF code and maintained I've been toying with LibreWolf (https://librewolf.net https://librewolf.net)
- mhd 4y agoWhat's the minimum Clang for this? I've been playing around with old versions of MacOS recently and most of the "Let's keep some old version of Firefox alive" projects are failing or bound to. Sooner or later this might be a good alternative.
- JZerf 4y agoI believe this relies on quite a few of the libraries in SerenityOS and according to one of the lines [1] in one of the build scripts for that it looks like Clang 13 will be required as a bare minimum. The Serenity project is also using the fairly recent C++20 standard according to their contributing document [2] and they additionally are working on a new programming language of their own called Jakt which I imagine will become a requirement in the future. For the time being, it looks like this will make it harder to support older environments which is a bit unfortunate because their browser project does look really interesting. [1] https://github.com/SerenityOS/serenity/blob/master/Meta/serenity.sh#L209 https://github.com/SerenityOS/serenity/blob/master/Meta/sere... [2] https://github.com/SerenityOS/serenity/blob/master/CONTRIBUTING.md?plain=1#L42 https://github.com/SerenityOS/serenity/blob/master/CONTRIBUT...
- renewiltord 4y agoPlanning on being Widevine et al compatible? It's the only part I see as having an outside constraint.
- ilrwbwrkhv 4y agoAndreas Kling is a legend. Having followed him since the early days, I am so happy that the whole ecosystem has come so far. What a refreshing change to get unadulterated insight into the mind of a true hacker, when the rest of the world is stuck grinding leetcode.
- skulk 4y agoIsn't it wonderful what a social safety net brings us? For context, SerenityOS was dreamed up during a stint at a state rehab facility. (This information is included in a link from TFA)
- alexb_ 4y agoOne has to wonder what Terry Davis could have made if he got care for his schizophrenia.
- cmrdporcupine 4y agoI've heard from multiple schizophrenic people that many of the meds given for schizophrenia also cause significant cognitive impairment or make them drowsy/low-energy. So hard to say.
- lioeters 4y agoI sympathized for him, a brilliant and broken person. The U.S. is full of such homeless people, coast to coast, fallen through the social safety net like crazy diamonds on the streets. His operating system was deeply related to his obsessive mystical thoughts. The computer was an "oracle", a medium through which he communicated with the Divine. If he had received the mental healthcare he needed, I wonder if he would have continued with the project. In a way, that project was all he had, when he had lost everything.
- cies 4y ago> The browser and libraries are all written in C++. (While our own memory-safe Jakt language is in heavy development, it’s not yet ready for use in Ladybird.) Have a look at Jakt, it looks a like a really cool language, that strike a balance between performance and simplicity. And it has proper sum-types! https://github.com/SerenityOS/jakt https://github.com/SerenityOS/jakt
- fulafel 4y agoAnd memory-safe.
- suction 4y ago
- soheil 4y agoFirefox is great, I've been using it for the past few months. It required some customization, yes even to the source code to get it to my liking. For example you can't override CMD+P or use CMD+Shift+C to toggle the dev console so I had to make a patch [1]. I also had to develop a couple of plugins that were missing [2]. It's a joy to use knowing you're giving the middle finger to Google, your data is not tracked and stolen from you by Google and making the way for a more free internet. Sure sites like YouTube are slower to load (bc Google makes them so if not on Chrome?) but those are minor inconveniences and there are not a lot of them. So I'm very happy with Firefox and wish more people would tolerate a slight initial inconvenience and make the switch. [1] Also made a Mac OS launcher filesystem hook to auto apply the patch every time the browser updates. [2] Yes, I packaged and published them too.
- EbNar 4y ago
- fluidcruft 4y agoI didn't know about Super Duper Secure Mode. That's pretty interesting. https://microsoftedge.github.io/edgevr/posts/Super-Duper-Secure-Mode/ https://microsoftedge.github.io/edgevr/posts/Super-Duper-Sec...
- alexb_ 4y agoWould this prevent me from looking at or modifying the Javascript code that is running, since it's already compiled?
- fluidcruft 4y agoHmmm. Maybe I misunderstood the link or missed something. I thought all they did is disable JIT and leave the JS as interpreted.
- alexb_ 4y agoI'm not knowledgable with JS at all, so you're probably right. I do wonder what the "Code Integrity Guard" is going to mean - who has to sign the JS? Does this mean tampermonkey/adblock scripts would stop working? Genuinely asking as like I said I don't really know too much about javascript
- wzdd 4y agoThis seems to be referring to https://docs.microsoft.com/en-us/microsoft-365/security/defender-endpoint/exploit-protection-reference?view=o365-worldwide#code-integrity-guard https://docs.microsoft.com/en-us/microsoft-365/security/defe... which would mean that they require the browser itself to be digitally signed, not the JS.
- genezeta 4y agoThis is a completely different thing. The "super duper secure mode" is not at all about you accessing or modifying the JS code from a website you are visiting. What it is about is trying to protect against some piece of JS code bypassing the security of the browser sandbox and accessing stuff it shouldn't ever have access to. :) Edit: Also, in general, no, disabling JIT would not prevent any particular JS code or extension from running. At most, it might mean some code would run slower. But that's what they claim, that it isn't noticeable.
- jmartrican 4y agoAs a web developer who has to test websites across multiple browsers, having to support another browser sounds expensive. While its fine to create new languages and platforms, attention should be paid to the costs this will have on the developers that have to now support the new stuff as well as the old. One example I bring up is Gradle. The jump from Ant to Maven was huge. Maven was so much better than Ant that Ant basically disappeared from my purview. But when Gradle came out it was not so much better than Maven that is caused a sea-change in the Java community. Now I see a split. Some projects use Maven, some use Gradle. And some projects post their instructions in both. I have to become an expert in both. And I don't see this changing any time soon. So now the Java community has to pay this tax going forward. Its no one's fault. The intentions were good by the folks who created Gradle or who adopted it in their project. And projects do need competitors to keep them motivated. I offer no solutions here, only gripes.
- phkahler 4y ago>> As a web developer who has to test websites across multiple browsers, having to support another browser sounds expensive. The problem is testing M browsers against N web sites - M*N complexity with M tests being done by each website. It should be M browsers tested against a single conformance test, and some means of testing N websites against a conformance test. The web browsers compatibility should not be your problem. Once people start accommodating non-conformists there is NO incentive for them to conform.
- iopq 4y agoThis is the biggest failure of the web as a platform. If it was extremely strict to begin with, like "display error and nothing else when website is broken" then people would actually care about standards
- 867-5309 4y agothis implies we should still be using the web like we did in the 90s. evolution happens in stages and is never perfect nor free from error
- z3t4 4y agoAnyone else having trouble building ? ladybird-git/src/ladybird/ConsoleGlobalObject.cpp:10:10: fatal error: LibWeb/Bindings/NodeWrapper.h: No such file or directory 10 | #include <LibWeb/Bindings/NodeWrapper.h>
- ADKaster 4y agoPull the latest from github rather than the AUR package. It's out of date. All things serenity related tend to get out of date quickly :)
- ddevault 4y agoI also can't build it (on Alpine), but I get a different error. I've tried to build Ladybird 3 or 4 times over the course of as many months and had no success.
- tomaspollak 4y agoDid you manage to do it? I (also) failed miserably. It would be great if they added a Github actions script to perform automated builds on each commit or PR merge.
- mycocola 4y agoIt's frustrating to see so much nationalism in this day and age.
- DiggyJohnson 4y agoDo you consider any instance of taking pride in your country - including small remarks pointing out trivial coincidences - as nationalism? Do you disagree with any example of recognizing the existence of a nation-state and it's relationship to individuals? I tried to phrase these questions without snark, but your comment genuinely surprised and confused me. Maybe I'm misunderstanding. I do see how OP's comment is a bit nonsensical in light of the author's Swedish origins, but I don't think this justifies your invocation of a term with such negative connotations.
- soulofmischief 4y agoYou are correct. Pride should not be confused with nationalism.
- hackernewds 4y agoI think the "backlash" is more so for the presumptive and dismmissive America-centric view of the world
- DiggyJohnson 4y ago> presumptive and dismissive You’re injecting dismissiveness, again a word with very negative connotation, at a simple mistake. I would be more inclined to take your point if it wasn’t a cheerful, good-natured attempt at humor - nothing more.
- mycocola 4y agoPointlessly injecting a remark relating the birthday of a project to the "great day" of 4th of July is absolutely america-centric and presumptive. By extension I view it as a definite case of nationalism.
- dang 4y ago
- c-smile 4y agoInteresting, from libHTML: class Node { Vector<Node*> m_children; Node* m_next_sibling { nullptr }; Node* m_previous_sibling { nullptr }; } Either m_children or m_next_sibling/m_previous_sibling are clearly superfluous. m_children + m_parent are enough for tree representation.
- ameixaseca 4y agoUnless sibling is sideways (same level of the tree) and children is downward (one level closer to the leaves). I haven't looked at the code but that's my first impression given the nomenclature.
- c-smile 4y agoNo, you didn't get it. You may have children accounted as DL list and so each Node should have m_next / m_previous node references. + Parent node to have m_first_child reference (if list is circular). + m_parent (Node) reference. So you need 4 pointers per each non-terminal node. Or 3 pointers for terminals. Otherwise (vector of children): You need only m_parent (Node) reference in terminals. And in container nodes additional vector<NodePtr> m_children; to store child references.
- eb2 4y agoYou don’t need parent because you can use a breadcrumb stack to track parents. You want sibling nodes otherwise you will have to traverse back to the root node sometimes to find a sibling.
- c-smile 4y ago> You don’t need parent You do need parent, check this: https://developer.mozilla.org/en-US/docs/Web/API/Node/parentNode https://developer.mozilla.org/en-US/docs/Web/API/Node/parent... > You want sibling nodes otherwise you will have to traverse back to the root node sometimes to find a sibling. The only need for this is in Node.nextSibling implementation: https://developer.mozilla.org/en-US/docs/Web/API/Node/nextSibling https://developer.mozilla.org/en-US/docs/Web/API/Node/nextSi... Where vector<>::find is pretty sufficient. But in reality (at least in my Sciter) node stores its index in parent's m_children so it is O(1) operation.
- samsquire 4y agoThis is awesome and I would like to understand the code for layouting. I wrote an extremely primitive layout engine a few days ago that I was intending to build a custom browser around but it's very challenging problem. I use the ORCSolver greedy algorithm for widths or heights. I plan to implement text support but that's hard problem really. I used WxWidgets and wrote it in Python for simplicity and understandability. I plan to implement branch and bound with intervals.
- hulitu 4y agoGrey on black. Some people never learn.
- bumblebritches5 4y ago
- londons_explore 4y agoWebkit/Blink has a really extensive test suite for the HTML rendering parts... I wonder if that test suite could be run on LibWeb to give a good target for all those test-driven-development developers to target their efforts towards...? As a side effect, multiple browser engines sharing test suites might help make the web more compatible...
- gigatexal 4y agoThe support both monetarily and in contributions to help him work on this full time and stay sober is one of the stories in tech that always warms my soul. I will always follow the project and with a soft spot for it because of this. At the end of the day who cares about the software, a man has kicked his vices and is healing. Bravo.
- lofaszvanitt 4y agoSigh... same trash UX/UI as every browser out there. :( Get a good UX guy to gain an edge over the current offerings.
- KeyBoardG 4y agoYou could submit some defects or documentation to the open project. It is 100% community driven.
- hiccuphippo 4y agoIt follows SerenityOS' philosophy of using the best ideas from 90s interfaces so I wouldn't expect them to make changes to the UI.
- thealienthing 4y agoJust curious, is there a strong need out there for alternative web browsers? It’s seems like there are a lot of choices already to Chrome and Firefox: eg Opera, Brave. What’s the goal of yet another web browser?
- takoid 4y agoOpera, Brave, and most other browsers besides Firefox are based on Google’s Chromium.
- sanxiyn 4y agoSafari and Orion are based on WebKit. WebKit and Chromium are quite different these days.
- kbenson 4y agoThere's really only Firefox and WebKit derivatives (everything else you listed), for the most part. I'm increasingly of the opinion that duopolies don't result in good progress, so I fully support new entrants in this space, even if I think it's unlikely they'll get near the popularity needed to compete at a high level.
- KeyBoardG 4y agoAndreas gets asked these questions weekly (probably daily), and answers in his FAQ. Its not to compete, or be a business. https://awesomekling.github.io/faq/ https://awesomekling.github.io/faq/
- w_for_wumbo 4y agoSomeone could have said the same around media players, there's Windows Media Player, Quicktime etc. Thankfully VLC didn't listen, and we have a marvel today to thank for it.
- edgyquant 4y agoAlso some would say MPC is a great improvement over VLC even though no one really thought they needed one at the time
- zzo38computer 4y agoMaybe now they can make a better web browser, hopefully. I would have chosen to design some things a bit differently, including a better separation of parts that can avoid binding too closely (to make it more possible to customize it in programs that use these libraries), if it does not already do (I do not know how closely they already are; I haven't read all of it). I would also put the protocol interface separate from the implementation (so that other protocols can more easily be added). (I also would have preferred C instead of C++, but C++ might also do OK, anyways.) Also should be helpful that independent programs can be written which combine them and use them in their own ways, e.g. to change the connections between components, to deliberately exclude some features, and/or to add new protocols and URI schemes and file formats and JavaScript functions and HTML commands and CSS commands (I have idea how to do by "meta-CSS", which is a feature to be used purely by the end user (document authors cannot use it)) and character encodings and audio/video codecs and other features, and/or changing some features. (I would hope to be able to write such extensions/programs in C, instead of having to use JavaScript.) I also would have designed that it avoids converting to/from Unicode if possible, preferring to work in the text encoding directly, and using fonts of those encodings directly, when possible, and using Unicode as a fallback when needed or if there aren't fonts, etc available for the specific encoding already used. (This is to work around many problematic features of Unicode.) User options are also needed. For example, there should be an option to disable MIME sniffing if the user does not want it. (One way to support this and other options is to implement a "header overriding" menu that the end user can configure (both request headers and response headers); this can be used to implement many options that the end user can configure, including (but not necessarily limited to): DNT, language, cookies, HSTS, etc.) Also, a better implementation would not try to hide things from the user or believe they know better than what the user has specified. I also think that some parts of the W3C specification aren't so good and need to work around that somehow, in some cases. Nevertheless it seem a good idea that they can make a new one in order hopefully is better than the other one (which, in time, we may be able to see).
- gigel82 4y agoIt's interesting to see Windows in the list of platforms to be supported. LibJS itself was very interesting, but unfortunately it depends on a bunch of other Serenity libraries (AK, LibCore, etc.) which in turn heavily depend on POSIX. I'm curious if that means they want to make LibWeb / LibJS actually portable C++ code and how they plan on achieving that (hopefully without introducing a POSIX compatibility layer on win32 like msys or whatever).
- myfonj 4y agoFAQ in there [1] states "Windows (WSL)" with no mention about plans for native Windows build. [1] https://awesomekling.github.io/Ladybird-a-new-cross-platform-browser-project/#q-which-platforms-will-ladybird-support https://awesomekling.github.io/Ladybird-a-new-cross-platform...
- gigel82 4y agoThat's just confusing, they shouldn't include Windows at all. WSL is a virtual machine running a Linux kernel. It's akin to saying Microsoft Office runs on Linux; you just need to set up a VM running a Windows kernel first :)
- webprofusion 4y agoYes it's confusing and running on WSL isn't really the same as running on Windows. I've just tried it, and it's early days- there are hundreds of thousands of edge cases to consider just to get it really "working" on linux, so it's no easy task. On the other hand , implementing a posix compatibility layer for Windows for just the things you need to support in the browser is relatively easy.
- niutech 4y agoTheoretically it should be possible to build Ladybird for Windows using Cygwin. For now, you can run an AppImage in WSL: https://github.com/SerenityOS/ladybird/issues/33#issuecomment-1192095045 https://github.com/SerenityOS/ladybird/issues/33#issuecommen...
- danjoredd 4y agoI really hope this is successful. We need more web platforms outside of chromium
- Melatonic 4y agoHell. Yeah. Screw the naysayers. This is awesome!
- lossolo 4y agoLooked at one file only but isn't it out of bounds memory access if domain_string will have one char only? https://github.com/SerenityOS/ladybird/blob/master/CookieJar.cpp#L115 https://github.com/SerenityOS/ladybird/blob/master/CookieJar...
- Underphil 4y agoWhy post here and not a PR if you think there's a bug?
- nsajko 4y agoAdded to Arch Linux repos a few hours ago! https://archlinux.org/packages/community/x86_64/ladybird/ https://archlinux.org/packages/community/x86_64/ladybird/
- mekster 4y agoIf he was going full scratch everything, why didn't he make a new markup and styling that would fix everything the web is wrong about instead of reinventing a jaggy wheel? That would've been a revolution.
- wtetzner 4y agoThen you couldn’t use it to browse any of the existing web…
- mekster 4y agoPractically, would anyone use it to browse the web anyway? HTML/CSS/JS combo has been pretty much as is, only with some better tooling, for the past 25 years and we could use a fresh innovation. It's usually a small team who initiates an innovation as big companies don't like niche ideas but when it if gets enough dedication to take enough traction, it can fly.
- wtetzner 4y ago> Practically, would anyone use it to browse the web anyway? Yes, I think that's the point of the browser: to allow users of SerenityOS to browse the web.
- niutech 4y agoThere is something like it called Project Gemini: https://gemini.circumlunar.space https://gemini.circumlunar.space
- manaman 4y ago
- unethical_ban 4y agoI know very little about web engines, but I would be interested to know how this project is architected perhaps to supplant webkit for alternative browsers such as Vivaldi.
- Henrywright23 4y ago
- wraptile 4y agoI'm afraid the web is too far gone for new browsers. I'm already struggling to get through captchas on a Linux machine and if I roll a non-chrome based browser then I essentially end up solving 2-3 captchas every few pages. TLS and Javascript fingerprinting is making so only privilidged few can browser the web without giving away hours of free labor.
- jeroenhd 4y agoMy experience running Ladybird has been that websites generally tend to work fine, even on Cloudflare. Only though shady VPNs and TOR do I really get bothered by captchas.
- smartmic 4y agoPrevious discussion (56 points / 8 comments): https://news.ycombinator.com/item?id=32014061 https://news.ycombinator.com/item?id=32014061
- oxmane 4y agoKling's story in general, and this in particular chapter, is truly inspiring. This led me to think that I'm not sure inspiring of what, and so made me think of whether a sense of inspiration must always be to do something, or if is it sometimes just a feeling (like being sad, happy, angry). Sorry for the somewhat off-topic thread.
- cdeutsch 4y agoI believe I speak for all web developers when I say "noooooooooooooooooooooooooooooooooooooooooooooooo!!!!!!!!!!!!!"