Essence: A desktop OS built from scratch, for control and simplicity
nakst.gitlab.io
nakst.gitlab.io
I'm always impressed when people build their own operating systems or browsers from scratch. Few of them will attain widespread adoption. That doesn't mean they aren't valuable though. Kudos to the developers.
Funnily enough, you don't get this "unity" or whatever you want to call it that I'm describing with Windows at all. They have random legacy ways of doing things, Windows is starting to look like a hacked together Linux OS with how inconsistent the main OS apps tend to be.
Edit:
Maybe if Microsoft stopped letting Marketing Teams dictate what goes on Windows, and focused more on polishing their OS. They would have an insanely fantastic OS offering.
It wasn't just that, both the founders were very big socialist/communist people who didn't really understand how to run a business. They still don't. Elementary OS turned down numerous funding opportunities, numerous partnership opportunities. They made a really really great OS. But the business aspect was just atrocious.
The "Pay what you want" model could have worked for their store. But just having a store in the beginning they didn't want one and then they pivoted to having one way late. There was big internal strife in the eOS Community amongst the developers for years, and very little conflict resolution on their part.
I wouldn't say they're an example of a failed funding model. Rather, I'd say they're an example of people who have amazing talent and ideas, but refused business help and refused to admit their failures.
I’m not sure they’re wrong.
You can fundamentally disagree with the system, but that means you opt out of all parts of it. And so they might not have been wrong about their belief system being incompatible with business/capitalism, but the idea that they could build something large without compromising was wrong.
I, too, would like Fully Automated Luxury Space Communism - but you cannot get there from here by willing it to be true. (And it chafes me to say that, but that doesn't change the truth of it)
It's a society with lots of capitalism, so of course you'll have people involved who are also involved in capitalism; you'll buy your computers from capitalist companies, etc. That doesn't seem meaningful.
So what do you mean?
I mean that projects don't need to be capitalist enterprises. For example, they can run on donations or grants, with volunteer labor, etc.
Of course there are such projects that receive enough in donations from end users to be sustained but not very many; and in the particular case of Linux desktop environments or distributions there is a lot of competition for users and donations of this type. The successful ones I can think of off the top of my head, such as Libre Office and Lichess are "killer applications" with no serious competition in FOSS.
I'd love to be wrong about that.
Also, as in my other comment, it depends on how we define the involvement of capitalism. See my other comment:
Linux absolutely is carried to a large part by companies employing people to work on Linux. Mozilla needs to find income to pay its own employees. All three are slightly different models, but all three make it fairly clear that you can't cut all ties.
As for the "what do you mean" part, "obtaining money via capitalist endeavors related to the project so non-affluent devs can actually afford to work on the project" is probably a good enough definition.
In comparison, Signal is small - and even it can only make it because an extremely affluent person (Brian Acton) carries them. It's not reproducible for larger projects.
Open source will never spend time marketing anything, never spend time educating an actual mass of general users as to its virtues or how to use it well, and suffer as a result. You don't have Desktop Linux that blows everything else out of the water because that would require investors to stake a lot of money doing these things, which they will only do if there is profit. PopOS gets as close as you might with something like that, but is ultimately shackled by the fact they cannot sell their software. (Enterprise is different, where I guess you can nerf the product to make money on servicing instead).
Even someone with infinite resources cannot do what a company selling something for a profit can because they are either ultimately captured by and beholden to some other interest other than the product itself, or constitutionally lack the energy to be daring and actually compete. Imagine what someone could do with a Firefox sold for a profit because of its superior functionality and superior efficiency.
turns on imagination…Firefox eventually goes all-in on making profit from selling user data and making advertising deals after they realize that the vast majority of users are totally fine with the default and other free options and have no interest in paying for your product.
But if Firefox ever decided to make a lot of money by selling good browsers at a high price to paying users, well I think the result would be quite interesting.
Selling software is not a novel idea.
And I would pay an enormous amount of money for a browser that worked well that had features I've always imagined a browser should have. And I don't expect anyone to make that for me without the reward of getting nice stuff for doing so.
No one would bat an eye if Firefox were no more since there are other browsers more or less just as good, more or less just as bad. It's an immemorable product, the consumer surplus of which compared to the best alternative is very low.
MailMate is closed source donationware with a bus factor of 1, which is just hilarious. As I understand it, the “sell a mail client for a one-time payment” model turned out to be insufficient to support the single developer, leading to the whole “patron of a for-profit company” theme.
I pay for FreeBSD and KDE. Because I believe in them. But I don't want them to make a profit. Once they do, the people receiving that profit will want to see a rising trend. Because business believes that a steady profit is decline, there must be growth at all costs. Once they reached the limit of what the market will bear, the focus shifts from giving the customer what they need to extracting as much value from them as possible. This is a death spiral because extracted value can never be infinite. The result is the phenomenon we now call enshittification.
The lack of a profit-driven approach is the only sustainable way to avoid this in the long run. Sooner or later it will always happen. Even if you have intelligent and ethical investors (which are extremely rare) sooner or later some sharks will buy it.
In fact the phase where a product truly has the customers' interests in mind is usually not very profitable but instead a gamble by investors, sacrificing short-term profits with the goal of extracting much more from the customer once they believe in the product and are too locked-in to leave.
I think this illustrates what I believe you get backwards well. It's not that getting good quality and concise software requires traditional investors and a centralised force of vision. It's because doing software in general but specially desktops is hard.
I think Linux is not what it is despite investment, I think it is what it is because of it. Look at Windows and Mac, they show that they listen and develop their products with users in mind just as far as the market and investors let them. They will otherwise push anti-consumer features (like ads in the start menu) without even batting an eye.
This belief that profit drives innovation is just silly. Profit drives profit, innovation and competition are accidents. In a world with Googles and Amazons, Microsofts and Teslas, I am really baffled that it isn't clearer for us in tech that this is exactly like this.
The state of Linux and opensource in general, flourishing for decades is a living testament to that. Opensource is not only moral, it is the practice that we know to be the most sustainable and resilient in the long run.
I feel compelled to write, though, that even though I frame profit in this bad light, they are only so when the they are the ultimate goal of your product. What countless enterprises are enabled by Linux and OSS initiatives? What vast amounts of money flow only because Foss and OSS are the way they are?
The problem is that "innovation is driven by profits" is a religious credo at least in the USA. If you’ve ever read Atlas Shrugged, by Ayn Rand, you would laugh at how silly it is, how transparently absurd the "story" is.
Then you realize that a lot of billionaires in the USA consider this book as a scientific economical treaty. And they have the power to make it true and to brainwash everybody, including politicians, to believe it is true.
As it is the 40th anniversary of the GNU project, it worth remembering that software has always been created as free and open source. It was how innovation was possible. To the point that, in 1976, a young Bill Gates had to write an "Open Letter to the Hobbyists" which could be summarized as "Stop sharing! Please! Give us money and stop sharing stuff between yourself. We want to be a profitable industry, not an innovation playground".
That highlight how nobody took proprietary software seriously at the time. But people listened. People voted for Reagan (who managed to dismantle antitrust laws because monopolies are good to make lot of money) and, suddenly, making Bill Gates the richest man in the world became a top priority instead of pushing innovation and cooperation.
As Facebook, Microsoft and Google demonstrates every day, a monopoly is never innovating. Every new single "innovation" is from a startup that was bought by fear of having a competitor in the future. So, today, to become rich, you don’t have to make a real innovating business. You simply have to pretend be a bunch of geniuses that could create the next monopoly and be sufficiently good at pretending that an actual monopoly buy you. That’s basically what is now told in every startup incubator (the technical term is "exit" and, as soon as VC enter the dance, you already talk about your exit plans. Which is easier when one of your VC is on the board of an existing monopoly. That’s how he manage to extract lot of money from his position).
The system is completely unfair, corrupt, suboptimal. But we have to tell the fiction that it works so people don’t request a change.
Are there other alternatives to consider?
I remember an article showing the UI of Windows system apps, and as you go deeper and deeper into %SYSTEM% or whatever, you get UI from progressively older and older versions that are sort of left behind. You get an incentive to polish all the immediately user-visible stuff, but there's so much of it anyway so if the deeper-hidden stuff that a handful of people is using is still working, nobody will touch it. Look, the WMI console was probably unchanged since Windows 2000 at the time of Windows 10.
On the other hand, how many kinds of first-party file copy dialogs and file open dialogs do you need? :-)
Indeed, these "reskinned"* Linux distros seem to be so common, it's easy just to make assumptions.
This (Essence) looks pretty impressive - to be built from scratch and have a nice clean (dare I say it... "non-linuxy looking") UI is even more impressive.
* "Reskinned" is probably a bit of a lazy term here - many of them are a lot more than that - but still, the point is that the value prop. is often the nicer more user-friendly aesthetics layered on top of an existing distro. What we're looking at here seems a lot rarer. Snapping at the heels of ChromeOS?
- Beautiful screenshot.
- "Essence will happily run on low-powered hardware.
It can take less than 30MB of drive space, and boot with even less RAM.
No tasks run in the background, giving your applications all the space they need."
- Amazing performance.
- All the code is made available under the MIT license.
- Demo video.
I can immediately imagine many different ways this could be popular in areas not covered by the main desktop OSes. The only other thing I guess I want to know is the developer toolchain/experience and "getting started" which is covered by Discord/Patreon links.I think it would do well to differentiate it from current desktop OSes, e.g. first class support for touch interfaces, etc. Imagine all the IoT devices needing UIs.
I bet you could compile this into WASM and get quite a good web UI with it's fake windowing system.
https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...
"Thank you. I am not working on it at the moment. But I would like to return to the project when I have more free time ;)"
He's busy with something else.
Would have being nice if it in Rust. The video gave a lot nice insight to having a tabbed window based UI. It makes it more like browser. That idea can very much be adapted be used in project such as Fomos or even create a WM in Linux/FreeBSD.
You can toss together a shitty biplane but at the end of the day you can’t make the engine or the full size fuselage and there are no mechanics or factories for your jet so nobody is ever going to use it.
times (0x1B4 - ($-$$)) nop
disk_identifier: times 10 db 0
partition_entry_1: times 16 db 0
partition_entry_2: times 16 db 0
partition_entry_3: times 16 db 0
partition_entry_4: times 16 db 0
dw 0xAA55
That's elegant, because it shows where/how the disk identifier and the 4 classic MBR partitions coexist inside of the same first 512 bytes in the boot block, with the boot code... (it is assumed that AFTER the boot block is copied to disk that the partitions will be set by an outside program (i.e., fdisk or similar program) to appropriate values... otherwise MBR partitions would be set to 0 from copying the boot block -- but that's a minor sub-point... it's elegant code -- I've seen a lot of boot block code, and I've never seen that construct before!)
Edit: Nothing has full disk access either. I even see bash listed as explicitly not having access.
Edit: OK, iTerm2, not sure what's going on there.
Besides disk access, there are all sorts of other ways I don't trust random native apps on my Mac. At least camera access is locked down now (I think).
Weirdly, iTerm did ask for permission when I cd'd to ~/Desktop, and I said no, but it was still able to cd and edit/view/delete anything inside; the only thing I can't do is ls. BUT in ~/Downloads, I can only mess with files created within iTerm, not pre-existing ones. At this point I double-checked iTerm still doesn't have access to either (or full disk access) in my sysprefs, restarted iTerm, and reproduced this.
So yes it still feels like Terminal is willingly complying while iTerm is not totally, or something is just broken. And even if both were actually enforced fully, the permissions carry over to anything you run in there, and they don't protect very many things to begin with. Like, it can delete my entire Music lib without permissions either way.
Ventura 13.5.2, 2019 Intel MBP
I think terminal users aren't really in-scope for macOS security.
iTerm is third-party software like anything else. Wonder if it got an exemption. Also, TextEdit evidently has access to everything without asking, so it's not just a terminal thing. Idk what's happening exactly, but I don't trust this sandboxing.
There are also data vaults, which you cannot get around without turning off SIP.
Let's say you want to buy an ice cream cone, and pay for it.
Think of permission flags as signing a "Power of Attorney" letter, and handing that over to Dairy Queen. Every time you get a cone, they just take the money out of your account. But they could also sell your house. You can't limit the side effects of the permission you give, it's all or nothing.
On the other hand, capability based security is like taking a $5 capability out of your wallet (in the US, a piece of paper with Lincoln on it), and paying directly for that transaction, one time, at the time it is needed. The most you can lose is that $5. You're not risking your home, just to get ice cream.
The OS market is deranged. Capability based security is something that's been required since persistent internet connections became a thing. Clearly blaming everything else, the users, admins, programmers, compilers, language design, hasn't worked.
[1] https://support.apple.com/en-asia/guide/mac-help/mchl211c911...
And it does have more specific capabilities called "security-scoped bookmarks".
The infosec community never read The Boy Who Cried Wolf.
It would look almost exactly the same thing you already see. Instead of "file open" actually just being a suggestion to the application, the OS would actual enforce the permissions so that the application couldn't do anything else.
The usability of such a system wouldn't really ever take a hit. It certainly wouldn't result in excess permission dialogs. You don't see permission dialogs every time you take cash out of your wallet, or when you turn on a light switch.
The infosec community is weird, and I'm not part of it. I strongly disagree with them these days.
If you mean a true capability-based OS, there is Fuchsia, which doesn't seem to be used yet, and RedoxOS, which is in development.
One thing that can be done with proxy capabilities is to run programs with any instruction set whether or not it is the instruction set on the computer that it is running on; the programs will just work. This is because an emulator can provide a proxy of the execution capability and can detect the instruction set required and emulate it. (Of course this only works if the program that spawns it is given the proxy capability, although it doesn't know that it is a proxy capability.) (It could also emulate specific instructions, e.g. if you are using x86 without BMI2 extensions and you want to run a program that uses BMI2 extensions.) Another thing that can be done is to run a program on another computer just as though it is local (or vice-versa); a program can, when sending/receiving messages through the network service, make IDs for any capabilities it send/receives and use those to handle passing the messages. So, capabilities can be shared between computers, and a program can use a combination of capabilities from multiple computers. (Multiple locking will be a bit more complicated.) Or, you can use proxy capabilities for testing what a program might do ten years from now (by proxying the date/time capability), or simulated disk errors, etc. Or, if you do not have a camera, you can make a program that expects it to be given the contents of a video file instead. There are many more possible uses, too.
The kernel need not know what proxy capabilities are used for, in order to work.
When a program starts, it receives an initial message, which will contain any capabilities it is allowed to use (and, depending on what capabilities they are, might be able to use those capabilities to request further capabilities). (If the initial message contains no capabilities, then the program is immediately terminated (unless a debugger is attached to it), since it would not be able to do any I/O and is therefore worthless.) (Note that there are no command-line arguments, environment variables, etc; only the initial message.)
Files can contain links to other files in their stream as well as bytes, and links to files can also be made into capabilities which can be sent in messages too. A link can be either to the latest version, or to a fixed version (in which case copy-on-write is used if it is accessed and written through a link that is not to a fixed version).
Another feature is that locks and transactions can involve multiple objects at once, instead of having to lock each one individually. (This is helpful for many kinds of synchronizations. For example, a program might write to (or read from) two files and avoid a race condition of another program reading (or writing) the two files and receiving (or sending) inconsistent data.)
I also have many ideas of the high-level design (of stuff other than the kernel); most of the above is about low-level design.
There will be common conventions for formats of messages, including endianness, etc; this way programs written for different instruction sets can communicate with each other without being confused.
One high-level feature is the "common data format", which is a binary structured format, used for most of the system. This can include plain lists, key/value lists, rich text, diagrams, zoned spreadsheets, time series, typed arrays, extensions, and others.
The command shell has some ideas similar than Nushell, although using the binary structured format instead of text, using Extended TRON Code instead of Unicode, and others. It can also be used as a programming language, can be used to control other programs (if having access to the appropriate capabilities) (a bit similar than ARexx ports), etc. You can also just as easily move and copy data and objects between the command shell and GUI, so they are designed to work well together, rather than independent.
The file system is strange, not having file names and not having directory structures (except for a root directory with 256 numbered entries, mainly used for some low-level startup stuff; not all entries need to link to a file). A file can have several numbered forks (not necessarily consecutively numbered; perhaps 32-bit numbers); some of the low numbers have specific conventional uses while higher numbers can be used for your own use. There is journaling needed, including of transactions of multiple files at once.
A POSIX compatibility library is also possible. This is a user program that a C program can link to, and a set of conventions for messages to use with POSIX (e.g. command-line arguments, environment variables, etc), which can be used to run programs that are designed for POSIX. (However, designing the program for this system instead would make it much better suited for this system in many ways, since it can then take advantage of many of the helpful features of this system.)
My intention is that it is not a single implementation of the operating system, but a specification that multiple implementations would be possible. Some implementations might run by themself while others might be able to run inside of another operating system (similar than Inferno). A program for this operating system could then run on any of the available implementations. The kernel and the higher-level parts of the operating system need not match (other than stuff such as drivers), although usually would be expected that they would match.
>Lord, what I would give to see Haiku gain real traction
I think the only thing we can give right now is our time and money. Porting applications, porting to different hardware platforms, spreading the word, etc.
And now the web browser matters more than the native apps or OS to many users. And Chromium has dominance there.
Arguably it's also the only reason Macs became viable for consumers instead of dying off. Imagine if you couldn't use any webapps on a Mac, nor "apps" that were built with Electron.
I'm more curious why my car, which is fairly recent, doesn't start in 0.3s.
The powertrain and body control modules, assuredly running a RTOS, certainly do. The PCM for example controls when the spark plugs fire. If it did not boot instantly, the engine wouldn't run. If the BCM didn't boot, the doors wouldn't unlock nor would the key or PTS start the engine.
The user-facing infotainment crap is not necessary for the "car" part to function. You could physically remove it and the car would still be drivable.
This could be a very, very long list of hypothetical changes :)
Presumably the dock can be detached while booted, so the kernel should also be able to handle booting and only detect at some point that the dock has disappeared
Presumably, most faster boot OSes simply don't support as many devices. Amazon was able to get Firecracker to boot Linux damn near instantly by pretty much removing all hardware support from the kernel since they know for sure it's only ever running as a VM on a hypervisor they strictly control and won't change.
If you know for sure the devices you need, you can compile the kernel yourself and remove all the stuff you don't need and possibly even get rid of udev and just hardcode what it normally detects.
https://wiki.archlinux.org/title/Improving_performance/Boot_...
I haven’t really had any issues with Linux boot times for personal machines lately. I think the people that care most about getting into the sub-second range are the ones doing cloud VM stuff, spinning up lots of micro services or whatever.
Even without the stupid 20 seconds of firmware I can't do anything about, XP shows me an interactive desktop in half the time Linux does. Windows 7 is just as fast, and just as fully-featured as my desktop Linux install. Windows 11 still boots faster (and more reliably) than Linux despite the overhead of Windows Defender and drive signature checking.
I don't need 0.3 seconds of boot time on my desktop, but something a bit faster would be nice. I think my machine is so slow by the death of a thousand services all starting at boot.
systemd-analyze
And then systemd-analyze critical-chain
To see what is slowing it down?My system takes 10 seconds to boot apparently, with fairly minimal tuning (I boot from a USB drive so I try not to worry too much about this, hah!). But I don’t use a desktop environment or any of that sort of stuff, so it is probably not a good comparison.
Still, 45 seconds is pretty slow, I wonder if it is waiting for something that idles out; network interfaces or something like that.
I can disable a few things here and there, but whatever hardware detection takes place in the kernel (I assume Nvidia related things, it's always Nvidia it seems) isn't really somethint I can change. I can try disabling more POST parts, maybe, and disable Docker on boot to take off another second, but to shave everything down I'll probably need to reinstall.
Out of curiosity did you do some tuning or was the boot just faster than you guessed (if it is the latter, let’s all celebrate the fact that our computers have gotten fast enough to confuse us, haha! When XP actually came out I was a teenager with junky hand-me-down hardware, 45 second boots would have been a dream…).
Startup finished in 17.642s (firmware) + 9.467s (loader) + 20.168s (kernel) + 12.175s (userspace) = 59.453s graphical.target reached after 12.102s in userspace.
Subtract the slow motherboard firmware (17.642s) and me typing in my password (about 5s, nowhere close to the 9s+20s that the loader+kernel is taking to boot before systemd kicks in) and I get about 45 seconds of "this is what Linux and tools is actually doing before I can log in".
All Windows version from XP up to 7 were horrifically slow until modern SSDs came along. For years, you could take any Vista (or even XP) era computer, double or quadruple the RAM and insert an SSD, and it would feel like a completely new machine. You can still pick up a second hand high-end Windows 7 computer for cheap and use it for what you would otherwise spend $500-700 dollars on after ripping out the hard drive and installing an SSD.
Having used Windows 7 from a HDD for years, I can tell you for sure that Windows 7 sure didn't boot this fast when I first got it :)
(~0.2s is wasted on a dependency that shouldn’t be there, but I’m not prepared to resolve that)
Linux definitely can be fast, but in my experience it starts slowing down as you install more services and tools, and I'd need to reinstall and reconfigure from a clean slate to get back to normal speeds. I can make it quick again ny disabling a ron of services and features, but that just slows me down later in the process.
There's a weird tendency to put things into multi-user.target to have them run at boot, even if they are not actually required for user login. There's no actual need to start openssh before gdm, but that's how distros set things up.
On my machine (which I didn't alter from Ubuntu defaults) GDM runs after:
system.slice switcheroo-control.service dbus.socket plymouth-quit.service console-setup.service cloud-config.service gpu-manager.service rc-local.service systemd-journald.socket systemd-user-sessions.service basic.target plymouth-start.service getty@tty1.service fwupd.service sysinit.target
according to systemctl show gdm.service --property=Aftercloud-config is the weirdest one, but it has to do with locales and system configurations for automatically deployed systems (and after first install), I believe. getty@tty1.service is also strange, but doesn't even show up in systemd-analyze blame.
In my boot-analyze charts I don't really see that many problems with illogical start orders to be honest. systemd-networkd-wait-online seems to hold up a bunch of networking services but that depends on the rest of my network responding in time so I can't even blame it for that.
It's a cool trick that reminds me of Firecracker. It would be nice to see Linux use that trick as well, but with the existing issues for Linux ×+ hibernation + lockdown mode, I think it'll take a while before that's finished.
`systemd-analyze` (in particular, `systemd-analyze critical-chain` and `systemd-analyze plot > plot.svg`) are useful to diagnose. On my system you can see that my graphical session waits for systemd-user-session.service, which waits for network.target, which waits for NetworkManager taking its sweet time, which isn't started before network-pre which waits until nftables is done loading rules, etc.
Optimizing the service order and their dependencies does wonders for boot time.
Why isn't this automatic? I'm pretty sure most of us have neither expertise not enthusiasm for that job.
Service optimization is basically deciding what your system doesn't need in order to function for your usage, and moving things you don't need to a late initialization with no dependents. A distribution dedicated for a particular machine usage and desktop environment could do some tuning on your behalf, but it is not generic.
I've don't bare metal development and drawn simple graphics with a linear frame buffer, but for a UI like this or Windows, I'm wondering how the images that represent the UI components are generated.
I don't see any png files for window borders, but I do see code for setting pixels to the correct color for a theme.
Are UI components in an OS usually programmed and not created in an image editor and then tiled?
These days, it's almost always vector graphics. Used to be simple bitmaps. This OS in particular is using vector graphics.
> The user interface is completely vector-based
So these are all descriptions of how to draw the UI, as opposed to using raster images.
Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - Jan 2022 (290 comments)
Tips:
(1) Add virtualization early. That way it'd be possible to run other OSes and thus familiar apps. In the long term a seamless form of virtualization similar to Parallels Coherence could be explored as a way to run foreign apps on their host OS. This would be a short-medium term solution to the 'no apps' problem that dogs any new OS effort.
(2) Limit hardware support scope by targeting a few target platforms. I'd suggest Linux-oriented laptop vendors like System76 and Framework, the Raspberry Pi, and a few other familiar things with related ethos.
(3) Look at using foreign drivers such as those from Linux or BSD via a compatibility API. This might let you support notoriously painful to support things like wifi cards.
> nakst's webpage // This site works best with JavaScript disabled
Great guy ;)
Small world.
And oddly, it would be even more impressive if they built their own Web Browser from scratch ...
https://github.com/SerenityOS/serenity/tree/master/Ladybird
I also like their Jakt programming language:
https://github.com/SerenityOS/jakt
Though I'm more enthusiastic about Redox (doing it in Rust):
On the subject, would anyone now what if there is any selenium / Webdriver support, for Ladybird?
Not only is it too soon for that, it's too evil for that.
Wouldn't it be helpful for the ladybird development team, to use to check for regressions?
Apart from that, if Ladybird could be used in a test suite, wouldn't that be massively beneficial for it's adoption?
My thinking is that if it became praxis among hard core open source fanatics to test their webpages thoroughly in ladybird, it would after a while more or less become "best practice" to do so, with said fanatics serving as "early adopters".
What also speaks for this argument is that hard core open source fanatics, often go for simple and no-nonsense designs such as the very page we are using to discuss this on? I'm sure HN is perfectly usable in ladybird, even though I haven't checked it out myself!
I'm not saying Ladybird "needs to" have all this, just putting some of it into context. And it's no slight to the project either; they've managed to get a lot working with a paucity of person-hours.
I've apparently been "ruined" by functional languages because this sort of imperative mutational style of "make this object have these attributes" is just an instant turn-off. an equivalent functional style would look something more like:
> rect = Struct.merge_attr(rect, %{width: 640, height: 480})
(assuming you have the Elixir language feature of being able to re-use the same name, but underneath it's actually pointing to a new value; if not, you'd have to assign to a new name, but at least there'd be no ambiguity, and you could still continue to refer to the old name until it went out of scope)
> It can take less than 30MB of drive space
A modern display driver alone takes disk space/RAM in the class of 30MB, so Essence is really tiny. The probably downside is that it cannot utilise modern hardware.
Starting from scratch is awesome, and I'm firmly in the group that we should not strive for backwards compatibility at this stage, and instead aim to maximize intuitiveness for both developers and users.
For e.g. twitter-like streams / RSS, simple high level workflows for generic business purposes, and so on.
Browsers should necessarily not be supported. Layout options should be fixed, and totally protocol specific. (For e.g. a twitter-like stream can only be displayed in limited ways. )
> If you're interested in contributing, join our Discord server to discuss ideas with other developers.
Would be nice to have a dedicated forum (Discourse?) instead, but I get that it is too soon for this project.
I love the idea of all application windows being able to be moved into tab groups. Are there window managers that do similar things?
[1]: https://www.zdnet.com/article/microsoft-windows-10-testers-w...
Good times!
Haiku Stack&Tile!
https://www.haiku-os.org/docs/userguide/en/gui.html#stack-ti...
A long time ago I implemented something like it (the stack part, not the tile part) in Awesome/Lua, so that floating windows could be tabbed together. Code is lost though. It was a bit too buggy anyway, pushing Awesome to its limits.
Basic things like writing documents, viewing images, and (limited) web browsing using a text-based browser would probably be perfectly fine with an unaccelerated framebuffer.
It would be amazing if there was an OS agnostic driver layer
That's what things like VESA VBE are for.
Thanks for sharing!
I have NEVER seen an OS installation (and boot sequence) as fast as that - just incredible.
But yes, if you're starting from scratch, that virtually begs to do something at the language level.
A quick look at the repo suggests this is coded in C++? Too bad - a missed opportunity imho.
Otherwise a very cool project!