At first glance, I thought this was another Linux distro with a custom window manager, not a new operating system. But it is its own operating system! It's got a custom kernel and everything. Built from scratch, indeed.
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.
On that note I really appreciate distros like ElementaryOS purely because they maintain their own software that is specifically modified / created with the intent to making their distro feel really integrated. Other distros put in loads of work too, but it just feels more consistent, like a KDE distro with all the KDE bells and whistles (KDE is a good example of what I'd like to see, an OS with default apps that all really blend together and feel like a part of one OS).
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.
> At first glance, I thought this was another Linux distro with a custom window manager, not a new operating system. But it is its own operating system!
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?
That's one hell of a great landing page. It tells me pretty much everything I want to know.
- 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.
Definitely. There's too many '00s distro pages I've seen that hide away the screenshots away from the front page, almost as if they're afraid to show off their system.
This combination of features makes this platform quite interesting for embedded applications. If the window management API is any good, I think this system could make for quite a decent embedded control system.
I bet you could compile this into WASM and get quite a good web UI with it's fake windowing system.
As always. I don’t know why people even pretend that it’s going to be a real thing. It’s like me saying I’m going to make my own jumbo jet.
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.
I like the following structure at the end of the assembler boot block code:
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!)
I'd love to see an OS like this take hold for people who don't need all the backward compatibility and server goodies in Linux and who don't want to deal with Microsoft or Apple. Something like Chrome OS but not so locked down.
I want to see this, but with a user friendly capabilities-based security design so that downloading an app from the internet can't steal my credentials and documents. That's the biggest issue people face today and yet there seems to be no real interest in trying new OS-level approaches as far as I know.
I’ve been planning and building this for years. But regular life always takes priority. This could change if there was a viable business model for an operating system that didn’t rely on hardware sales (the Apple model) or on advertising (the Android and increasingly Windows model). One day when I’m independently wealthy maybe.
Intel had a talk a few years back where they got Linux boot down to 0.3s from power is applied to fully interactive UI on an embedded platform. That case was meant for automotive, where you want things like infotainment and instrument cluster available shortly after the accessory power is enabled.
I've been wondering how an OS draws a high-quality GUI.
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?
If starting from scratch, PNG files may actually be more complex, since decoding is needed. On the other hand, once a drawing API is available, it is easier to map some form of vector graphics encoding which calls corresponding drawing instructions. At the same time, this would also solve scaling issues and the vector graphics assets also normally takes far less space.
Usually new OS efforts seem like they're too "boil the ocean" impractical. I like this. It immediately sticks out as something with some promise.
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.
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.
It needs, at the very least, a vt100 terminal app, a C/C++/Rust compiler (ideally to llvm so this can run on ARM or ia64 or anything else), a decent code editor, and a basic web browser.
It looks pretty clean and sharp, awesome job! People that build OS (and other low-level software) always have my respect, and first of all because of their dedication and commitment
This is really, really significant imo. The idea of system wide tabs has been in the back of my head for a while, as well as moving away from the linux kernel. I've messed around with it a bit and I'm very impressed.
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.
This model of desktop can still be immensely useful. All we need to do is support only a few high level protocols.
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. )
I love the ideas and this is impressive progress for a indy OS. My only point of discontent is that every window looks like a tiny little Chrome window. Not a GUI look and feel I care for at all. There is, however, no accounting for taste so I can't really fault the devs for that.
[+] [-] loudmax|2 years ago|reply
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.
[+] [-] giancarlostoro|2 years ago|reply
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.
[+] [-] supertron|2 years ago|reply
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?
[+] [-] webmobdev|2 years ago|reply
[+] [-] benj111|2 years ago|reply
[+] [-] unknown|2 years ago|reply
[deleted]
[+] [-] karmakaze|2 years ago|reply
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.
[+] [-] Apocryphon|2 years ago|reply
[+] [-] vmfunction|2 years ago|reply
[+] [-] jeroenhd|2 years ago|reply
I bet you could compile this into WASM and get quite a good web UI with it's fake windowing system.
[+] [-] troymc|2 years ago|reply
https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...
[+] [-] djbusby|2 years ago|reply
[+] [-] MagicMoonlight|2 years ago|reply
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.
[+] [-] peter_d_sherman|2 years ago|reply
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!)
[+] [-] Hammershaft|2 years ago|reply
[+] [-] queuebert|2 years ago|reply
[+] [-] queuebert|2 years ago|reply
[+] [-] ryanjshaw|2 years ago|reply
[+] [-] joshmarinacci|2 years ago|reply
[+] [-] kwanbix|2 years ago|reply
[+] [-] npteljes|2 years ago|reply
[+] [-] binkHN|2 years ago|reply
[+] [-] LeSaucy|2 years ago|reply
[+] [-] arghwhat|2 years ago|reply
[+] [-] PretzelPirate|2 years ago|reply
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?
[+] [-] TkTech|2 years ago|reply
These days, it's almost always vector graphics. Used to be simple bitmaps. This OS in particular is using vector graphics.
[+] [-] signaru|2 years ago|reply
[+] [-] cnity|2 years ago|reply
> The user interface is completely vector-based
So these are all descriptions of how to draw the UI, as opposed to using raster images.
[+] [-] phendrenad2|2 years ago|reply
[+] [-] pmarreck|2 years ago|reply
https://en.wikipedia.org/wiki/Vector_graphics
[+] [-] dang|2 years ago|reply
Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - Jan 2022 (290 comments)
[+] [-] api|2 years ago|reply
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.
[+] [-] mdp2021|2 years ago|reply
> nakst's webpage // This site works best with JavaScript disabled
Great guy ;)
[+] [-] starkparker|2 years ago|reply
Small world.
[+] [-] fodmap|2 years ago|reply
https://gitlab.com/nakst/essence/-/issues/20
[+] [-] lutrinus|2 years ago|reply
[+] [-] amelius|2 years ago|reply
And oddly, it would be even more impressive if they built their own Web Browser from scratch ...
[+] [-] cies|2 years ago|reply
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):
https://gitlab.redox-os.org/redox-os/redox/
[+] [-] miohtama|2 years ago|reply
> 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.
[+] [-] pmarreck|2 years ago|reply
[+] [-] vict0ni|2 years ago|reply
[+] [-] TobinCavanaugh|2 years ago|reply
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.
[+] [-] divnat2023|2 years ago|reply
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. )
[+] [-] ejstembler|2 years ago|reply
[+] [-] RealCodingOtaku|2 years ago|reply
> 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.
[+] [-] BirAdam|2 years ago|reply
[+] [-] userbinator|2 years ago|reply
[+] [-] mdp2021|2 years ago|reply