Not-a-Linux distro review: SerenityOS is a Unix-y love letter to the ‘90s
qwerty456127 2021-08-18 13:31:17 +0000 UTC [ - ]
I hope the actual GUI toolkit is engineered with potential support for visual designers in mind.
It is also interesting to note how well do legacy Windows controls integrate with the system so old Windows apps running on modern Windows versions enjoy seamless support of modern user IO facilities which didn't exist when they were born (autocompletion, spell checking, dictation, screen reading, etc).
KronisLV 2021-08-18 14:06:38 +0000 UTC [ - ]
The closest that i can think of is Lazarus for FreePascal: https://www.lazarus-ide.org/
It allows for native applications for a variety of platforms, is open and free and isn't constrained to a single OS like WinForms are. Things might improve with the new .NET versions somewhat and Java is also passable (with either Swing or JavaFX), but at least Java doesn't really feel native and needs JDK, as does .NET.
Is Electron one of the only modern options (that isn't native though, only cross platform), or am i missing out on a whole class of lovely tools out there?
qwerty456127 2021-08-18 14:45:57 +0000 UTC [ - ]
As for Electron - the idea of learning the web front-end stack and designing UIs from scratch (rather than composing them from common controls), just to produce insanely heavyweight executables compatible with a limited set of platforms (e.g. Lazarus is much more cross-platform, it can even run on Haiku) doesn't sound inspirational at all.
badsectoracula 2021-08-18 14:58:54 +0000 UTC [ - ]
What is missing from Lazarus' editor? I never used IntelliJ but from my experience with Visual Studio (up to 2019 IIRC) i've found Lazarus' editor to actually be more featureful than VS in pretty much everything i tried: syntax completion (ctrl+space), code completion (automatically writing code for missing declarations, syncing interface and implementation, implementing abstract methods, overriding parent class functions, etc), code navigation, etc.
qwerty456127 2021-08-18 15:04:02 +0000 UTC [ - ]
Perhaps it actually is good, I probably just didn't dedicate enough time to discover all its features. Or maybe all the cool stuff was added right after I tried it (it's been some years already). I mostly mean context-aware completion suggestions, refactoring and code navigation. I already can't remember what exactly was missing (I didn't find) when I tried.
> I never used IntelliJ but from my experience with Visual Studio
VisualStudio + ReSharper ≈ IntelliJ.
badsectoracula 2021-08-19 06:56:11 +0000 UTC [ - ]
For example Ctrl+Space will do context aware completion (e.g. will put similar types to the context near the top) but other forms of code completion, like automatic variable declarations, creating definitions in implementation section for for declarations in the interface section, etc are done with Ctrl+Shift+C. It has a bunch of different shortcut keys for different stuff and you need to go through both the main menu (Source menu mainly) and the context menu (Refactor and Source) to find them. Also some of the default settings aren't ideal (IMO), so you may want to check the Codetools category in the options that controls some of Lazarus' behavior there.
badsectoracula 2021-08-18 14:55:03 +0000 UTC [ - ]
Well, Lazarus is exactly what you are asking for. Its GUI designer is leaps and bounds ahead pretty much every other GUI designer for desktop applications and the IDE integration with the underlying framework is second to none. The project isn't only under active development but has more developers than it ever had.
The WinForms you mentioned feels like some abandoned beta that barely provides Delphi 1 level functionality in terms of "RAD-ness" and other frameworks abandon the entire RAD idea altogether, regressing back to glorified resource editors like you'd see in 16bit Windows back in 80s.
javajosh 2021-08-18 14:43:36 +0000 UTC [ - ]
The product that I miss for little SMB projects is Access. It was the best option for building single-user CRUD apps with a really thoughtful bundle of features. (It totally fell over with multi-user, and every user needed a license for the runtime (with some exceptions) and VBA had some major warts, but in terms of DX it was great)
qwerty456127 2021-08-18 22:21:01 +0000 UTC [ - ]
Try Gupta Team Developer. It's an SQL-centric binding-driven visual RAD tool where you draw the controls visually and basically bind them to SQL queries. It was pleasure and fun to use the last time I tried. To me it felt way better than Access.
qwerty456127 2021-08-18 15:42:24 +0000 UTC [ - ]
Nice to know. I thought they deprecated soon after they added it.
> and is itself written with Swing
Is there a way to configure it to look like actual Swing[1]?
[1] https://docs.oracle.com/cd/E37069_01/html/E37073/figures/ide...
javajosh 2021-08-18 16:39:30 +0000 UTC [ - ]
BTW here's a link to the component - it's called GUI Designer. https://www.jetbrains.com/help/idea/components-of-the-gui-de...
qwerty456127 2021-08-18 16:51:09 +0000 UTC [ - ]
zozbot234 2021-08-18 14:53:15 +0000 UTC [ - ]
qwerty456127 2021-08-18 15:10:01 +0000 UTC [ - ]
foldr 2021-08-18 15:17:59 +0000 UTC [ - ]
qwerty456127 2021-08-18 15:22:35 +0000 UTC [ - ]
QtDesigner does exactly this for Qt (and you have to run a command to generate the Python code from the XML then). Good enough, better than nothing but still not an actual IDE where you can just click on the button you drawn and jump to the code seamlessly or select a function you already wrote to be an event handler right in a control properties window.
This adds an extra step of actually "building" the UI which prevents you from changing things on the fly.
This may sound unimportant but when you have it the actually integrated way like in the VisualStudio WinForms Designer, building an app actually feels like painting with Bob Ross - satisfying and productive. And doing the UI and the code in different apps feels like having separate kitchens (rooms) for cutting the food and for roasting it.
In fact I imagine my ideal app dev tool as cross-platform VisualStudio WinForms with WPF-like bindings and programmed in F#. Oh boy that could be a pleasure I would pay some month salaries of mine to get.
garaetjjte 2021-08-18 16:49:00 +0000 UTC [ - ]
QtCreator does work like that.
pjmlp 2021-08-18 17:14:20 +0000 UTC [ - ]
dleslie 2021-08-18 15:22:12 +0000 UTC [ - ]
pjmlp 2021-08-18 13:51:55 +0000 UTC [ - ]
They introduced a C++ Builder like with C++/CX for WinRT, but apparently too many people inside Redmond wasn't happy to have it around, so now you get to use its replacement (C++/WinRT) as back on Visual C++ 6.0 and ATL.
Pity that C++ RAD tooling similar to C++ Builder is seen as not for real developers.
So the trend to write GUIs by hand on C++ is the only path known to many devs.
jcelerier 2021-08-18 14:48:09 +0000 UTC [ - ]
Yet C++ allowed them to write literally all that OS in a ridiculously small amount of time.
Anyways, with Qt support (https://github.com/SerenityOS/serenity/pull/9362) you can likely soon use Qt Creator for your RAD needs.
pjmlp 2021-08-18 17:26:49 +0000 UTC [ - ]
Qt is the only one left carrying that flag.
C++ has all the tools to make it as easy as VB/Delphi kind of development, yet too many spoil it by sticking to what I would call C+.
I was quite disappointed to the way XAML C++ has become, but apparently the teams that used WRL seem to be happy, more to them, rest of us are sticking with C# now.
trashburger 2021-08-18 13:44:13 +0000 UTC [ - ]
qwerty456127 2021-08-18 15:14:01 +0000 UTC [ - ]
akling 2021-08-18 15:41:51 +0000 UTC [ - ]
Since then, we've built a markup language for interface design (GML) which has made GUI development significantly easier, so that's what we're focusing on instead. If someone wants to build a visual design tool on top of GML, they are obviously free to do so, but as with everything else in SerenityOS, people work on what they themselves are interested in. :)
qwerty456127 2021-08-18 15:45:26 +0000 UTC [ - ]
PS: By the way, do your neighbours know you are a genius developer superhero? :-)
breakfastduck 2021-08-18 14:14:14 +0000 UTC [ - ]
skywal_l 2021-08-18 11:56:17 +0000 UTC [ - ]
I think the objective of the author is not to make the most complete, fastest, shiniest OS ever, but have something that works, that's usable, fun to work on and educational to look at.
1_player 2021-08-18 12:21:27 +0000 UTC [ - ]
paulirwin 2021-08-18 14:02:05 +0000 UTC [ - ]
Lambda functions
Smart pointers = less need for *
Move semantics = less need for pointers, efficient pass/return-by-value
Type inference with `auto`
`nullptr` = strongly-typed null pointer type sans macros
`constexpr` = compile-time programming sans macros
Deleted functions = can prevent things like accidental copies
Range-based `for` = very similar to Java's for-each
That should mostly catch you up from C++03 to C++11-ish (language features only; there's plenty more to explore with library changes). C++14 and 17 had some refinements to those items so review the above in a current context for additional enhancements to them. C++20 adds some major things like concepts and modules, but starting there might not be the best idea to get up to speed.
(I'm a C++ amateur and hobbyist, so I might not be using 100% correct terms above! I'm also a very, very minor SerenityOS contributor.)
ImprobableTruth 2021-08-18 13:09:34 +0000 UTC [ - ]
ryanianian 2021-08-18 12:54:51 +0000 UTC [ - ]
Bjarne (inventor of the language) has a "blue book" that is very good and pretty comprehensive (if a bit dry and academic). I read it cover to cover in a couple days - not really retaining everything but learning what I didn't know. Then I read Scott Meyers's Effective Modern C++ to get up to date on the latest thinking and really nail down some of the finer points.
YMMV but this worked well for me to get a good feel for C++ the language. Mastering the STL and/or Boost is a journeyman job, though, as is mastering (any) build system. Of course there is no substitute for firing up the editor and writing real code.
the_only_law 2021-08-18 13:32:02 +0000 UTC [ - ]
pjmlp 2021-08-18 17:31:01 +0000 UTC [ - ]
For example, when checking the feature list of latest versions from Python, Java, C#, F#, Typescript as a couple of examples.
the_only_law 2021-08-18 19:30:09 +0000 UTC [ - ]
stephen82 2021-08-18 13:07:18 +0000 UTC [ - ]
faraaz98 2021-08-18 12:26:43 +0000 UTC [ - ]
qwerty456127 2021-08-18 16:06:33 +0000 UTC [ - ]
There already are enough of OSes which work and are usable. To me it seems the goal here is just beauty in all the possible aspects.
throw0101a 2021-08-18 11:57:32 +0000 UTC [ - ]
If anyone wants a third-party software repository for their OS project, it's worth checking out NetBSD's pkgsrc:
* https://en.wikipedia.org/wiki/Pkgsrc
It's multi-platform (Linux, BSD, macOS, Solaris, AIX, QNX, etc), and so has a lot of infrastructure for portability already set up:
rbanffy 2021-08-18 13:37:46 +0000 UTC [ - ]
I absolutely love MacPorts. It's packages done right.
plextoria 2021-08-18 16:31:11 +0000 UTC [ - ]
I also gave a go at cross-compiling pkgsrc for SerenityOS. Will resume if I find some free time in the future.
boricj 2021-08-18 17:12:26 +0000 UTC [ - ]
That's not counting actually building packages inside SerenityOS (pkgsrc doesn't support the kind of cross-compilation we'd need to build packages on a Linux host for a SerenityOS target), which will probably expose lots of other bugs, race conditions and limitations.
klaussilveira 2021-08-18 16:52:44 +0000 UTC [ - ]
klaussilveira 2021-08-18 13:00:19 +0000 UTC [ - ]
qwerty456127 2021-08-18 13:09:13 +0000 UTC [ - ]
Needless to say the themes would have to be extended to accommodate the features of the relevant toolkits like GTK3 complex window titles and KDE's optional always-on-top and always-on-bottom buttons (I actually want every stacking window manager to have these two, I use both of them a lot).
And I would also want these for Windows 10 (and 11 obviously), not just Linux. Themes for some actual apps (e.g. Firefox) also needed.
I wonder if there already is enough of aging millennials appreciating retro GUIs to form a market.
[1] https://docs.oracle.com/cd/E37069_01/html/E37073/figures/ide...
pessimizer 2021-08-18 13:51:33 +0000 UTC [ - ]
yjftsjthsd-h 2021-08-18 15:33:39 +0000 UTC [ - ]
If you're used to the other side of the fence, CDE [0][1] is 28 years old and perfectly usable on modern systems, not as a theme or recreation, but simply as the same software that once dominated the Unix desktop scene. Sometimes I enjoy running it when I get fed up with the "modern" world and just want to work on a system that's nigh-indistinguishable from decades ago.
[0] https://en.wikipedia.org/wiki/Common_Desktop_Environment
BoxOfRain 2021-08-18 13:23:40 +0000 UTC [ - ]
anthk 2021-08-19 01:35:26 +0000 UTC [ - ]
Not for icons but Chicago 95 makes a good approximation.
qwerty456127 2021-08-19 02:04:34 +0000 UTC [ - ]
gnyman 2021-08-19 09:55:52 +0000 UTC [ - ]
Tried it out on an old MacBook and the look was great, but then I got bogged down in the standard get-trackpad-and-wifi-working.
Not sure how far the "pixel perfectionism" goes, but the few hours I used it (before breaking X11) it felt good.
anthk 2021-08-18 13:03:13 +0000 UTC [ - ]
klaussilveira 2021-08-18 16:48:45 +0000 UTC [ - ]
https://raw.githubusercontent.com/grassmunk/Chicago95/master...
Now compare to these:
https://raw.githubusercontent.com/grassmunk/Chicago95/master...
Or here:
https://raw.githubusercontent.com/grassmunk/Chicago95/master...
Everything is off. Compare to the real thing:
https://external-content.duckduckgo.com/iu/?u=http%3A%2F%2F4...
https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2F...
Or compare to SerenityOS. That's good UI work.
theandrewbailey 2021-08-18 17:26:00 +0000 UTC [ - ]
squarefoot 2021-08-18 13:00:04 +0000 UTC [ - ]
bla3 2021-08-18 13:21:18 +0000 UTC [ - ]
nickelcitymario 2021-08-18 13:52:05 +0000 UTC [ - ]
How can any open-source project compete if it doesn't lean on other open-source projects? Am I missing something?
This approach seems to guarantee that they can do a handful of things better than anyone else (because they control the whole stack), but not enough things to ever be truly complete OS for any given market segment.
Unless 1000 developers fall in love and choose to participate and compensate for the absence of other OS code, I don't see how this can grow sustainably. I'd love to be wrong, though.
breakfastduck 2021-08-18 14:03:15 +0000 UTC [ - ]
It's an OS being build from scratch born from the desire to do it, and to have all things in it built from scratch. The project has immense activity.
I absolutely HATE this kind of comment, with it being especially annoying to read on hacker news. Why the hell does everything have to be about gaining a market segment. Why can't something be for the joy of it.
nickelcitymario 2021-08-19 15:14:16 +0000 UTC [ - ]
If it's not intended to gain mass adoption, then that's fine. I see from some comments that it was started as a way to keep the original maker's mind busy during recovery. I respect that. It doesn't HAVE to be about gaining market share. But when I see a really cool project, it's hard not to immediately look at what would prevent me from using it or what might prevent it from gaining mass adoption.
To your point about being annoyed by seeing this on hacker news... you do realize this is a forum maintained by a VC firm, right? This is kinda the place for discussing how new ideas in tech can grow and be disruptive to the market. I'm not saying that's the only thing we can discuss, but it seems weird of you to hate it when this topic comes up. It's an underlying subtext to everything on HN. Am I wrong?
incanus77 2021-08-18 16:12:46 +0000 UTC [ - ]
city41 2021-08-18 16:56:13 +0000 UTC [ - ]
nickelcitymario 2021-08-19 15:14:54 +0000 UTC [ - ]
nonameiguess 2021-08-18 14:13:54 +0000 UTC [ - ]
natechols 2021-08-18 16:03:22 +0000 UTC [ - ]
Deukhoofd 2021-08-18 13:55:28 +0000 UTC [ - ]
Santosh83 2021-08-18 14:02:10 +0000 UTC [ - ]
The incumbents in the field are absolutely overwhelming in their existing functionality, which makes it an extremely steep slope to climb for an upstart, unless they aim to fulfil a specialised niche. Linux struggled for years with lack of drivers. That's always the one of the chief roadblocks. If the OS can drive a broad range of hardware, then automatically users and ports of software will happen, but if it can only recognise a few generic devices then it will remain hobbyist. But thanks to the complexity of modern hardware, the task of even adapting Linux's drivers would be an enormous undertaking.
hnlmorg 2021-08-18 14:02:20 +0000 UTC [ - ]
They're already half way there :)
Plus the goals of this isn't to be another Linux or Windows or whatever. It's to be an opinionated platform that's personal to the developers. That means even as long as there is just one developer on it, then the project is succeeding in its goal.
nickelcitymario 2021-08-19 15:20:59 +0000 UTC [ - ]
There's 84 contributors, but over 500 pull requests. That's not the same thing.
But: I hear you (and all the others) on the point that the purpose is just to create something cool and fun, not to solve any specific need in the market. That's cool and interesting. It'll probably never become an OS that I want to use productively, but it's still cool and there's nothing wrong with that.
michaelgrafl 2021-08-18 13:58:48 +0000 UTC [ - ]
I really dig it, although I don't expect to ever use it productively. And I love that the development is documented on YouTube.
lawl 2021-08-18 13:54:44 +0000 UTC [ - ]
It doesn't want to compete. It's a system for them, by them, based on the things they like.
ThrowawayR2 2021-08-18 15:08:18 +0000 UTC [ - ]
I'm sure the same was said of Linux 0.01 in the '90s, which was also the golden age of proprietary UNIXes. "From small beginnings come great things", as they say.
qwerty456127 2021-08-18 21:49:46 +0000 UTC [ - ]
Sadly this sounds quite obvious. But, out of curiosity, does it have to be? Let's imagine we actually write a modern web browser from scratch. Can't we design it the way it would be easy to port to other OSes because it would implement all the actual HTML and CSS features in a platform-independent logic layer on top of a portable renderer layer?
Remember how many platforms did the original Opera support back in the days. I remember running it natively on QNX. And it was the most modern and standard-compliant browser.
qwerty456127 2021-08-18 21:20:53 +0000 UTC [ - ]
And as I always thought it doesn't actually have to be a separate app. It could be enough to make a standard file browser window aware of a the nearmost window of the same class and send files there on F5/F6 press.
qwerty456127 2021-08-18 21:07:31 +0000 UTC [ - ]
In fact this is why I don't use (on Linux and Windows) dark themes actually: because there are many apps which don't support dark themes and look like huge white bulbs when your system is dark (and most of the apps which do support dark themes still require manual re-configuration every morning/evening instead of just complying to the OS-level switch).
pram 2021-08-18 11:52:04 +0000 UTC [ - ]
majewsky 2021-08-18 12:06:59 +0000 UTC [ - ]
qwerty456127 2021-08-18 12:45:40 +0000 UTC [ - ]
the_only_law 2021-08-18 13:34:10 +0000 UTC [ - ]
qwerty456127 2021-08-18 14:58:56 +0000 UTC [ - ]
anthk 2021-08-19 01:37:36 +0000 UTC [ - ]
anthk 2021-08-18 13:05:58 +0000 UTC [ - ]
qwerty456127 2021-08-18 12:43:03 +0000 UTC [ - ]
And someone related to the SCO Group can probably patent-troll you if you use it. There are no giants like RedHat and Novel to protect SerenityOS in such an event the way they protect Linux.
yjftsjthsd-h 2021-08-18 15:36:44 +0000 UTC [ - ]
qwerty456127 2021-08-18 16:55:58 +0000 UTC [ - ]
So has Linux, yet SCO didn't hesitate to spend enormous amount of lawyer-hours attacking it.
AFAIK even simple scroll bars and double clicks are patented, the patent holders (Microsoft and Apple, IIRC) just have generously allowed the GNU/Linux community to use them.
isr 2021-08-19 01:24:10 +0000 UTC [ - ]
What? Even scrollbars? Shows just how broken, regressive and anti-innovation the US Patent system is.
Its part of software legend how Jobs et al learned of these concepts through early exposure to Smalltalk. There are numerous videos of Jobs himself talking about it (with requisite amounts of awe). I'm sure most people here already know the history.
Theres even the interesting tale of how Jobs critiqued the scrolling (he prefered something smoother than line-by-line scrolling), and Dan Ingalls live coded a solution in a few minutes.
"Prior art" indeed :)
perryizgr8 2021-08-19 12:49:22 +0000 UTC [ - ]
severak_cz 2021-08-18 14:10:37 +0000 UTC [ - ]
breakfastduck 2021-08-18 14:13:28 +0000 UTC [ - ]
They don't have a 'plan' for hardware support. They work on what each individual developer is interested in working on. If you want to add compatibility with the pi then fill your boots!
severak_cz 2021-08-18 17:05:36 +0000 UTC [ - ]
But I keep to throw this idea over over. Maybe someone adopt it one day (and I will definitely beta test that later).
NoGravitas 2021-08-18 18:07:33 +0000 UTC [ - ]
In fact, I used OS/2 through the early '90s, and Linux through the late '90s and early 2000s, so I missed this era altogether, and I don't think I lost anything through it. It wasn't until 2006 I had a job that required Windows, so I didn't use anything between 3.11 and XP.
rbanffy 2021-08-18 13:36:39 +0000 UTC [ - ]
I'm scared of whatever is their crypto support...
breakfastduck 2021-08-18 14:08:02 +0000 UTC [ - ]
Or are you just throwing out comments without even looking at it?
yjftsjthsd-h 2021-08-18 15:39:03 +0000 UTC [ - ]
Deukhoofd 2021-08-18 15:51:33 +0000 UTC [ - ]
rbanffy 2021-08-18 15:27:46 +0000 UTC [ - ]
So, is it?
edit: they use libtls, so I guess they aren't "free" from third party code after all.
wander_homer 2021-08-19 05:14:31 +0000 UTC [ - ]
The whole OS is a learning process for almost everyone involved and they have every right to feel proud of every little step they take. Like do you think the best in class crypto libraries out there just popped into existence or their authors wrote the perfect code on their first try? All of them were inferior wheels at one point, and all of them made mistakes and learned from them.
breakfastduck 2021-08-19 13:32:57 +0000 UTC [ - ]
tristan957 2021-08-18 18:40:43 +0000 UTC [ - ]
ThrowawayR2 2021-08-18 14:48:56 +0000 UTC [ - ]
In any case, according to their GitHub page, they use libtls, which is also apparently associated with OpenBSD.
akling 2021-08-18 15:37:55 +0000 UTC [ - ]
1. https://github.com/SerenityOS/serenity/tree/master/Userland/...
ThrowawayR2 2021-08-18 16:38:24 +0000 UTC [ - ]
rbanffy 2021-08-18 15:29:35 +0000 UTC [ - ]
KronisLV 2021-08-18 11:40:04 +0000 UTC [ - ]
Personally, it's very interesting to see both someone so positive, but also so technically capable. It feels like that's an optimal situation for both building something nice, as well as developing a small and interesting community around it.