SerenityOS demo at Handmade Seattle 2021 [video]
media.handmade-seattle.com
media.handmade-seattle.com
That + a good console? Great idea. I'd love to see some innovation with the old school design ethos too; maybe there are even better ways of displaying controls? Or maybe a new way to think about controls that weren't around back then.
Oh yeah, this is something we've been exploring (carefully) with SerenityOS! There's obviously been a lot of good UI/UX innovations since the late 90s, and it's super interesting to look for ways to integrate them with the classic aesthetics.
As an example, we use breadcrumb bars in our file manager, to display the current directory as a part of separately interactive segments.
And we also have "Assistant" which works similarly to macOS Spotlight, for fast access to a range of data providers.
I'm sure there are many similar concepts we have yet to discover :)
Aside: Thank you for your video! It looks great and that's yet another OS I'd like to try and play with -- along with Plan 9, which Serenity made me think of a bit, and TempleOS because of the soul-saving effect of devoting to a hard piece of beautiful software craftmanship.
It’s a recent thing, but in a way it is a callback to making it more obvious what is interactible and not.
For a while, quite recently, it seemed to be catching on. But then it didn’t really catch on like.
But I think SerenityOS with a Neumorphism style would be a really interesting experiment.
https://uxdesign.cc/neumorphism-in-user-interfaces-b47cef3bf...
It's tactile, yes, but low density, low contrast, borders are non existent, colours are used to create intense gradient background palettes, instead of using them to increase readability and usability.
Neumorphism has all the drawbacks of modern flat design, with none of the benefits of old UI design studies. But it looks cool.
Which I like.
With current 90s themes for GTK+, "breadcrumb" segments appear just fine as buttons. It works quite well in practice.
Nothing is more frustrating than a perfect UI being fucked up by the passage of time. You don't need fancy shit. You just need consistency and speed. Give me back my xp-era explorer and start menu snappiness. Put a high speed camera on a windows 10 task bar and record someone right clicking on it. You might need a larger SD card than originally planned for this activity.
One simple way to handle this could be to compute the timer to fire at $last_rename_time + $delay, initialize $last_rename_time to 0 (and later set it to the current time in milliseconds), then only actually start the timer if the calculated value is actually in the future (which it won't be for the first run).
Of course... Explorer might (...still) be using periodic polling. xD
You might be able to use Event Tracing for Windows to find out if Explorer is actually following events in real time, with the minor caveat that it might be a bit of a project. I gathered a small handful of ETW-related links over at https://news.ycombinator.com/item?id=28348564 a little while back FWIW.
1. Open file with the delete flag 2. Call a function to set the new file information 3. Close the handle.
The signal that a file was renamed happens in step 2, and that signal/event is what many applications subscribe to. Explorer will wait until the rename is fully completed with the handle closed before showing the change.
and then I don't know what happened Steven Sinofsky showed up with radical ideas that software should be beautiful and everything sort of went to hell? curious if there was actually some kind of event marking the beginning of the end of intuitive software design for MS
It seems like once the graphics capabilities became common, OS interface developers used them even when they shouldn't have. Remember when moving windows in Linux had a "jiggle" to them? The genie effect in OS X? What about the "cube" of multiple desktop? I still don't know what the point of transparent windows is.
A few effects are useful - like aero peek in Windows.
For minimize, whether it's a line that shrinks, a genie lamp, a simple shrink effect, it's all the same. A simple visual cue telling you where it went.
A little form with the function is fine with me. There's a ton of computing power in even the weakest of machines. That said, I hope we'll always be able to turn it off.
Even a default install of Raspberry Pi OS uses a composited window manager on the RPi 4 now.
Why is this desirable? Objects in the real world have many inconvenient properties.
When you release a new OS version it has to look fresh or nobody will want it.
What's worse is, (at least IMO) they aren't even particularly pretty.
But about half of Linux YouTubers proudly display them. (Between you and them, the clueless one isn't you.)
And the F1-Help! In context, boring but always available.
And the rearrangeable toolbars, native!! The status bar, not the flimsy tooltip at the bottom which disappears.
And the treeviews! And the files ordered by name! Nowadays everything is ordered by “Most recently seen” so you can go back to the past because of the infinite roll. Everything was ordered and safe there. But you would lose your mind if you didn’t reorganize your desktop regularly, and that has faded away, no-one needs to organize files nowadays.
Windows had reached an incredible level of usability, complete with blind and disability support, scriptable, standardized, reorganizable, repeatable UIs.
Then the web appeared and despite having a searchbox in every app, there still isn’t a keyboard shortcut for it.
This infuriates me. None of the browsers have a shortcut to "search this highlighted text with Google". I instead have to right click, and carefully pick the option between "Print" and "Copy".
Not a single one, for an operation I do 200 times a day. I do not understand how it is possible. It's the most common operation I do in a browser.
Oh my gosh, yes. This is what drives me to distraction with recent Android releases. I'm tapping on things in the battery settings menu that used to do something, but no, not anymore.
Seriously, what is so damn awful about having some visual indication of what is a button?
The HIG is no more at Apple. GNOME design decisions are justified with comments like "I asked some friends and they liked this better". Most of the pain in Windows 10 are all the jagged edges where you cut from one era to another for no particularly good reason.
This is muscle memory and plasticity in action - the relative locations, stateful appearance, and behavior of controls gets mapped in our brains in the same way as taxi drivers learning the routes in a city, a violinist learning fingerings, or a child learning the alphabet.
"Muscle memory" is required to establish foundations of more complex behaviors. Once you've built a user interface, you should not ever touch elements upon which the users have built those muscle memory mappings. Yo Yo Ma would be as lost as a child if you told him he had to play the bassoon instead of cello. After a couple years of practice, some of the higher level artistry could be brought to bear on the new instrument, but it's the low level fundamentals that matter.
Firefox screwed with fundamentals, and their market share is evidence of why that shouldn't be done.
Windows keeps pushing down that path as well, mistaking their current dominance in desktop as something absolute.
With MS, they just seemed to stop paying attention to their own guidance and much preferred doing their own thing (see most editions of Office!), people just got fed up and it seems like it crumbled from there.
https://guidebookgallery.org/screenshots/qnx621
I honestly think anything else produced since is worse than this, and since flat design has taken root, UIs have fallen off a cliff both in usability and style.
I tend to get very Patrick Bateman-like when appreciating old UIs, the colour combination and choice of fonts on off-grey backgrounds, while modern interfaces just feel like there's no personality or warmth to them. Just flat uppercase #222 sans text on flat white background.
For me, all the greys date it a little, but other than that it’s a simple, clean, elegant and highly consistent UI!
The consistency is most notable. We’ve lost so much of that in modern operating systems (mainly Windows and macOS).
It feels very approachable.
EDIT: Now having watched the SerenityOS video(!) all the same comments above apply. Really nice work.
[0] sadly it doesn't even quite meet my relatively minimal almost-never-used laptop use case due to the only RDP client that worked at all being so horrifically out of date that it can't understand modern RDP authentication mechanisms.
Do you mean rdesktop? Indeed it's pretty old and probably should be disabled, so I just did that.
Did FreeRDP not work, then? It seems we had a 3-year-old version, so I just spent the morning updating it to the very latest (2.4.1). Seems to work fine here for me, I connected to a remote Windows machine successfully. (The port is missing a bunch of features, but the basics seem to work.)
In the future you can report issues to HaikuPorts directly, or feel free to ping me on IRC/Matrix/XMPP.
I was a little annoyed at the gigantic pile of packages that came along with those last two options, but there's no need to rehash rehash that argument. I do wish there had been an obvious way to clean those up after removing the applications they supported though.
I think KRDC may be hardcoded to use "xfreerdp", so it won't find the Haiku variant.
Yeah, "autoremove" isn't implemented unfortunately, nobody has gotten around to that yet. It would indeed be nice to have.
I'm pretty desperate for an OS UI that looks like this. KDE comes close but still too modernized.
Would love to try Serenity on a laptop some time. Anyone know how usable this is as a daily driver?
If you like to hack around and enjoy playing Diablo 1 on obscure software, Serenity OS is for you :)
For me that was Mac OS 8 on the first iMac :)
Today this discipline survives in mobile devices. Meanwhile, our desktop operating systems are festooned with a multitude of widget toolkits and language runtimes yielding wildly diverse, inconsistent and often fragile behavior and require 3+ orders of magnitude more memory.
Aside from (usually) pretty nice font rendering, what has actually been achieved with all of this?
And ever since i started using a window manager in Linux (somewhere in early 2000s) i really liked Window Maker's style even though i never used NeXTSTEP for many years (in fact the only time i used it i was kinda disappointed at how primitive it was in terms of window management compared to Window Maker :-P).
If you haven't checked them out, I highly recommend checking out Andreas YouTube channel [1]. It's the most interesting programming content I've ever watched - and I feel like he's honestly taught me a lot about programming!
How does one even go about writing something from scratch which runs on a particular hardware?
Is this possible to do for mobile OS? Lets say writing an OS from scratch for mobile?
I see Serenity OS, I upvote it :)
If I may plug, note we are 100% indie and upload presentations for free. We have a newsletter [0] but since HN loves RSS we have that setup as well [1].
What are the catches? Is it still very immature or assuming there was enough user-land software (which I'm sure there is not), is this ready for production use?
That said, you can do a heck of a lot in 3 years if you put in consistent time and effort towards something. :)
Write code top-down <https://www.teamten.com/lawrence/programming/write-code-top-...>:
> With bottom-up design you start with the components [...] Designing a component is a small tractable task that can be finished and called _done_. You’re creating a perfect, beautiful, reusable jewel. All engineers really want to _do_ is write components. [...] At every level there's pressure to do bottom-up programming. Avoid it. Instead, start at the top, with `main()` or its equivalent, and write it as if you had all the parts already written. Get that to look right. Stub out or hard-code the parts until you can get it to compile and run. Then slowly move your way down, keeping everything as brutally simple as you can. Don’t write a line of code that isn’t solving a problem you have _right now_.
There's a bit of history about early development here: https://serenityos.org/happy/1st/
Also, one of my earliest videos was showcasing some pre-YouTube builds of SerenityOS: https://www.youtube.com/watch?v=rveS_vwp0y8
I didn't know about computron until you mentioned it in the video, so I have to ask, would serenity run under computtron? If so, could a serenity port of computron run serenity in serenity?
"Today we are going to add X"
2 hours later: X is added and working fine.
Meanwhile, at work I could easily spend 2 hours looking for a GCC flag or figure out why the build script fails on arch after latest update
Updating tools in your environment/workflow is exactly a thing that can lose a lot of time, often for not much gain[1]. One way to become very productive is to know your tools very well, and that would extend to not changing them often.
[1] not much gain in productivity, but perhaps in security, compatibility, etc
Raise your hand if you have ever spend an afternoon trying to get someone else's build scripts working. Wondering why make, cmake, scones and ninja are used in the same project...
SerenityOS: A love letter to '90s user interfaces with a Unix-like core - https://news.ycombinator.com/item?id=23911180 - July 2020 (1 comment)
Introduction to SerenityOS Programming - https://news.ycombinator.com/item?id=22479132 - March 2020 (43 comments)
Pledge() and Unveil() in SerenityOS - https://news.ycombinator.com/item?id=22116914 - Jan 2020 (28 comments)
CTF writeup: First published SerenityOS kernel exploit - https://news.ycombinator.com/item?id=21918351 - Dec 2019 (2 comments)
SerenityOS: From Zero to HTML in a Year - https://news.ycombinator.com/item?id=21212294 - Oct 2019 (52 comments)
Serenity OS update (August 2019) [video] - https://news.ycombinator.com/item?id=20851356 - Sept 2019 (2 comments)
SerenityOS – a graphical Unix-like OS for x86, with 90s aesthetics - https://news.ycombinator.com/item?id=19986126 - May 2019 (179 comments)
Serenity: x86 Unix-like operating system for IBM PC-compatibles - https://news.ycombinator.com/item?id=19537807 - March 2019 (83 comments)
https://www.youtube.com/playlist?list=PLMOpZvQB55bfp6ykOLayL...
I'm equally amazed and horrified that they're building a web browser. It seems easier to build the native OS.
Edit: Well, practically.
Great OS, but the browser sucks.
I get quite jealous when I fire up the latest build of Serenity and see how functional the whole platform is in terms of QoL tweaks.
Iterm2 does something similar with links, but not files printed from something like ls. We should fix that. :)
which terminal supports this out of the box?
A modern replica of NeXTSTEP.
No light grey on dark grey text, no borderless buttons, no pointless 45% width margins.
Note that the system aims to be completely free from dependencies, so all ports are strictly optional.
I'm amazed that he built a whole new browser to go with his OS.
Just to be clear, while I started the project, it's since been hacked on by hundreds of people (we're well over 500 contributors on GitHub) and it's by no means a solo project anymore! https://github.com/SerenityOS/serenity
Alternately you could make a kernel module that provides /proc/js/ or /proc/whatever.json alongside /proc/whatever.
He has managed to make a worthy tribute to both UNIX and old Windows aesthetic style. And he did it almost all alone. Of course, Serenity OS is now a living, breathing community, just as it should be.
BTW, the guy has even ported DOOM, old DukeNukem and freakin' Diablo 1 to his OS. Mad respect to Andreas, Serenity is truly a work of genius.
This is the opposite of Haiku-OS, for example, which tries to provide at least the minimal amount of drivers, and some people are using it on real hardware.
It was actually a really interesting decision, to concentrate all efforts on the fun parts of OS development, and completely ignore the 80% which is boring, frustrating, and requires a large continuous investment to stay up to date with the latest stuff. Looking at Haiku, they have been working on their OS for decades now, and still aren't in a generally usable form.
I'm not sure what a QEMU-only OS is actually good for, other than playing around with it, but maybe I'm not the target audience :)
And obviously, nothing prevents people from writing drivers eventually. Andreas probably wants to run Serenity on whatever his hardware is eventually. But there's little point in doing that till we actually have a mature system that anyone would want to run daily.
I’m waiting for someone to start working on a custom cpu for it at this point :)
In case the the graphics drivers are not supported, VESA and/or Framebuffer drivers come to aid, and provide a usable system.
I highly recommend checking out his YouTube channel [4] where he records doing a lot of this stuff in real-time. Also pretty amazing that most of this was done on the side after this full-time job, up until a few months ago where he's been able to quit to focus full-time on SerenityOS from GitHub Sponsorships [5].
[1] https://www.youtube.com/watch?v=rRGu8DVrlHQ
[2] https://www.youtube.com/watch?v=1QYBvTy9QKE
[3] https://www.youtube.com/watch?v=vYWMLiZKB-Y
His hacking sessions on youtube are also great.
If I wasn't so locked into my own software ecosystem, and I had time to dabble with a new OS, I would absolutely try yours out. For the time being, I'll subscribe to your YouTube channel.
Also mailing list very kindly, I asked some simple questions and answer was polite and wellcome.
If you are studying operating system at your university course, it is worth a try!
Thank you for your effort folks
Back in the days there was no good explanation for users who asked how to change that. Windows95 and clones were all hardcoded with a top left light source producing the buttons' shadows!
The video in the link, Andreas mentions that its all from scratch.
I'm not sure how those two points conflict.
Reminds me of Terry Davis' - one of the few programmers I believe is "genius level" in the world.
What hardware do I need? Also, gaming needs to be a thing. What would it take to have say Quake 3 run on your OS?
Games like DOOM, original Quake, DukeNukem and Diablo 1. You should be able to compile some NES emulators yourself.
The OS itself runs in custom VM, but Andreas did manage to run it on his PC.
Is it possible to port this to mobile?
I also hope that SerenityOS has a long and successful lifespan, as it seems promising !)