I imagine a world in which the F/OSS community chose to implement and innovate on GNUStep or some other OpenSTEP/NeXT/Cocoa compatible implementation. This project is exciting by way of providing a more complete nucleus of what that desktop might look like.
The KDE/Gnome schism really divided the mindshare of the open *nix desktop. If we’d gone this route, I like to imagine the differences between Mac and Linux or BSD would be small enough that
- Mac apps would be a recompile away from running on Linux
And
- Linux would be a viable developer environment to target macOS
Apple’s commitment to the desktop has waned and caused some longtime users like me to go back to Linux/BSD. Meanwhile, desktop facilities on Linux/BSD have lacked coherence and singularity of vision. A viable, modern post-OpenSTEP Linux and BSD desktop would have the capacity to keep Apple honest, while giving the Free community a benchmark for consistency.
I’d love to see something like this project blossom into a 3rd way GUI layer for Linux and BSD.
Actually Gnome when it started was really good. I remember around 2000 same time as Redhat Linux 6, Gnome worked perfectly. But for some reason Gnome community wasnt satisfied so they started modifying it so much that it worked more like Windows, when they were still not satisfied they wanted to become more like Mac with fancy animations and a Dock. Which is why very few use gnome these days. Gnome people have lost their way. Now its just a community of confused people, same applies to KDE. A more well disciplined community is i3, mint and elementary.
For me, I've found Xfce to be decent and modest (what Gnome, Unity, and modern Kde Plasma are not.) But I wouldn't mind giving the old Kde 3 / Trinity a new try.
In fact, I just installed it on my XUbuntu and I'm trying it out again. It's really good, all the KDE apps are well integrated and it's extremely customizable.
The continued hate on gnome is getting old by now. We're a lot of people that enjoy gnome 3. It's stable, quick on non-ancient hardware, and it's a joy to get rid of the desktop metaphor. And the whole gnome ecosystem is comprehensive and well integrated.
Maybe OP was thinking of people that chose the DE and are not using the default because they don't know there is an alternative.
Unfortunately in Linux community telemetry is controversial so we do not have accurate data on what people chose when they have a choice, surveys on reddit or other web pages are not reliable
KDE is actually much nicer as a community compared to Gnome with much less ego and less toxicity. Plus they develop and maintain a ton of useful applications while Gnome feels much more dried at this point.( I use i3 myself).
Agreed. I have xfce installed along side it because I was curious at some point so I have that extra daemon that makes a popup every time a command is completed(comes with xfce). It's useful when the terminal is on another workspace.
Agreed - I loved gnome back in the 1.9 days, though I bounced between that and ratpoison a fair bit. Remember with Ximian was a thing, solidly making Gnome not only better but (to me) an appreciably better desktop? Until Yorba tried to roll out a bunch of things a few years back, I hadn't really seen other similar movement in the Unix desktop space.
For me the biggest issue was always the GTK. Writing GTK code in the 2.x days was like pulling hair and things were pretty fractured. It got to the point that I was doing a lot of dev in QT-land that ultimately resulted in my giving in and KDE-ing for a long while. While I don't have fond memories of NeXT, it's nice to see people bringing back history.
Damn, I feel old. I'm going to yell at some kids and hope they get off my lawn /s
Objective-C never had much love outside NeXT and this was even an issue for Apple, which offered Java support in the begging on parity with Objective-C while they weren't sure about the Mac OS developer's receptivity to it.
They only dropped Java after being validated that Mac developer community was fine with Objective-C.
Also lets not forget OS X could have been some evolution of BeOS and NeXT while innovative, wasn't going to last much longer alone on the workstation market.
I know there are a lot of Objective-C lovers and advocates out there, but after working in it for two years I just always found it to be a terrible worst-of-both-worlds fusion of C and Smalltalk.
It lacks both runtime and compile time safety, but without any of the advantages that come with Smalltalk (cool environment, quality GC, excellent class libraries). And because they essentially bolted on Smalltalk-style runtime late bound dispatch into C if you write in a heavily OO style you don't get any of the performance advantages of it being a "C".
On top of that the syntax is a terrible mismash. Constantly going back and forth between the two expression styles, they honestly just don't mix well.
And the memory model was never well done -- having to avoid reference-count cycles makes many things awkward. I understand why they got stuck with reference counting for collection, but it's not like RC implementations with the ability to handle cycle collections weren't invented years ago...
Finally, it's an insular language that is vibrant only within the Apple dev community.
I agree with others -- they would have been better going 'full Smalltalk' or something like it. I'm glad they finally went with Swift. I only wish I had been able to use it in my dev.
Which is very sad, because there are hidden gems in GnuStep and Etoile in the form of Obj-C runtime and Language Kit Runtime respectively. It could have served as a platform to develop and run dynamic languages, with support at OS level. But OSS community hardly paid attention to these llvm backed runtimes.
> Apple would had fix all the ongoing issues with the Java bridge
I really don't think they could have given the non-dynamic nature of Java. That part missing from Java's semantics and execution model is pretty critical and would only be added to the JVM much, much later. I have to agree with cmiles about the "hacky" nature of the bridge.
Dynamic loading, interfaces, bundles, reflection was already there in those Java versions.
The only things I can recall not being there aren't that well supported by Swift as well, regarding dynamic patching classes, missing method handling, swizzling and such.
Categories were missing and viewing all the challenges JRuby had to work through is a good start for the problems with trying to duplicate Objective-C functionality.
I really, sincerely doubt that even Apple with all its capital could fix all the issues with Java. At heart, it's just not a good language. You can get work done in it, slowly and painfully, paying a great deal of money to a great number of code monkeys. But it's an embarrassingly bad language.
Oh, I'm not going to take a position on Objective-C vice Java (I have some residual fondness for the former, from back in the 90s, but never really used it in anger) — only on the fact (well, in my opinion it's a fact) that Java is in bad taste.
I like to think that the F/OSS community could have done better with OpenSTEP/Cocoa language bridges than Apple’s performance with Java had the community not been burning all its energy on frameworkless window bling. In the other timeline where GNUStep becomes the defacto UI environment for Linux, we are writing Cocoa and GNUStep apps in Smalltalk and Guile because even Apple recognizes how great some of the F/OSS apps are.
Also BeOS had major problems. I loved it, but I think BeOS with its multiuser story and networking would have been a much harder road to follow for Apple.
Lastly, I think NeXT without Apple was failing not because of technology but because of cost and the economies of scale that little NeXT could bring. OSX proved the tech could carry forward with incremental improvement.
> Lastly, I think NeXT without Apple was failing not because of technology
Agree, mostly. In the end it took almost 10 years to get OS X to market anyways. Apple wasn't missing an operating system, it was missing focus.
Of course had they not invented the iPod/iPhone in the noughties, they could very well be extinct today and this conversation could look very different.
May be it would have been more popular to make the bolder move of using Smalltalk. At least, this choice would have been more sustainable than Objective-C, which has to be replaced now by Swift. Swift is not bad, apart for the botched argument list syntax; do it smalltalk-like like in Objective-C or indeed Smalltalk, or do it algol-like, but this mix is ugly!
Or of course, to just use Lisp, because let's remember that 95% of the success of NeXTstep was due to the Interface Builder which was just an Objective-C rewrite of a Lisp program!
For those interested, Dylan was a language with semantics close to Scheme, with object system inspired heavily by Lisp CLOS (with multiple inheritance and multiple dispatch), with infix, non-sexp-based syntax (kind of Lua-like), but also with pattern-based hygienic macros.
Honestly, just reading that list of features should be enough to get anyone interested, it died because the company behind it went out of business IIRC, which is a shame. It still exists, is on life support over at https://opendylan.org/index.html - without a dedicated IDE and up-to-date windowing library it's a bit unwieldy, and it lacks something like 20 years of performance optimizations that went into other compilers, but it still works. And, even now, its linguistic features are way ahead of Java; it would be easier to compare it with Scala rather than Java - and it was like that in '95.
Well, it feels more like an exhibit in a museum now rather than a real, workable tool - but at least it's preserved in this form, so there's still hope that someone will step in and revitalize it...
Also the Dylan team at Apple even though they already knew about their death sentence, went ahead and finalized their NewtonOS implementation ahead of the team redoing it in C++.
There was a comment from one of their team members a couple of years ago here in HN.
I think Julia and Swift both have a bit of Dylan on their souls. :)
EDIT: Found the Dylan post with comments from the Newton team. Search for entries from wrs and
mikelevins.
The thing is all of this is still possible even today on GNUStep and Etoile because they have Dynamic language runtimes, compiler people have to replace the runtime part with Objc runtime. And you can use Smalltalk or Lisp etc ..
What could be successful is a Linux distro that unites frontend devs and designers, but where the different tools and building blocks of that distro are used outside of the Linux ecosystem, for professional interface design on other platforms.
Think of UI design tools like Figma, but having their own frontend UI framework like VueJS or React, coupled with an optional OS abstraction layer like Electron. The official UI of the design tool could be the base for the UI of the OS.
GTK started similarly, as Gimp Tool Kit. Only that the base was kinda flawed and not really geared towards professional interface design, and it couldn't aquire credibility as design tool because of that. And if no professional designers use your tools it will be hard to get professional designers to contribute. That's the dilemma of GTK and Gimp.
Base something like GTK on a dedicated interface design tool (like Figma) and other tools that complete the designer, developer experience, and this could totally rock.
I think that a popular design tool that integrates a frontend UI framework and abstraction layer for the backend/OS, would also attract frontend and backend devs automatically.
The main flaw in todays linux environments is the lack of focus on professional niches outside of devops and sys admin tasks, especially professional designers. I wondering about what could be possible, if companies like Figma and Mozilla would cooperate on a design centric distro..
> The main flaw in todays linux environments is the lack of focus on professional niches outside of devops and sys admin tasks, especially professional designers.
This is a trait of UNIX culture, which never cared about doing cool UIs and GUI oriented development stacks, with NeXT being the exception.
Maybe Sun as well, if we consider how cool NeWS was before being killed.
Steve Jobs while at NeXT did not have the UNIX CLI culture in high regard.
"They said a Unix weenie was code for software engineers who hated what we were doing to Unix (the operating system we licensed)—putting a graphical user interface on it to dumb it down for grandmothers. They heckled Steve about his efforts to destroy it. His nightmare would be to speak to a crowd of them."
In a way, part of ChromeOS and Android success story is due to providing a full stack story to the developers and users, where Linux plays an invisible role.
>This is a trait of UNIX culture, which never cared about doing cool UIs and GUI oriented development stacks, with NeXT being the exception.
The idea of UNIX is more productivity through shared conventions, where the system behaves as expected and newly introduduced programs don't increase the cognitive load that much, because you already have gained experience with those conventions through those other programs in your toolbox.
The idea of modern GUIs for professional tasks is kinda the same, reducing coginitive load and reducing the barrier of entry through aquired familiarity with similar GUIs.
UNIX the GUI way means getting away with not differentiating between professional and casual users, and scaling complexity horizontally by using programs in conjunction with other programs, or task based contextual adaption of UIs in larger programs, where e.g. your sidebar changes depending on what you have selected instead of stuffing all options in the UI at once.
Apple and it's ecosystem of apps have figured that out, there are not really two worlds like in the Windows ecosystem, where there's a hard cut between casuals and niche professionals.
On a Mac you might find your way around Sketch if you've only used Keynote before, or in Logic Pro coming from Garage Band or Final Cut. It's this similarity that adds up and gives generalist creative people superpowers, like those Unix wizards on the command line.
> "...putting a graphical user interface on it to dumb it down for grandmothers..."
I actually hate how this attitude often seems to be the focus of GUI environments in the Linux world. The effect is that if you have to deal with anything not nicely wrapped up in the dumbed down environment you're presented with, you immediately need to drop down to a CLI world that's difficult to figure out and constantly changing.
Meanwhile, both Windows and OSX actually focus on more of a middle-ground with their UI (to different extents, I'll admit). All the mundane admin tasks, and even those scary super-technical admin tasks actually can be done from within their GUIs.
And then you have FreeBSD, which doesn't even try to target the GUI user. They admit their user is a technical sysadmin, but embrace it by actually making the CLI quite friendly to that set of users.
I think it stems from a logic fallacy that goes something like this:
If a GUI makes a program easier to use, then by using it, I am indicating that I am less technical.
It's not usually stated explicitly, but it's a pervasive attitude. IMHO, even highly technical users can benefit and be more productive from well thought out interface design. It's not like (most) grandmothers are suddenly going to use Visual Studio because it's got a GUI.
This needn't be idle speculation - there's an opportunity coming to execute.
It's apparently still non-obvious unless you track the field in technical detail, but HMD's as a screen alternative are not far off. As in last-year-ish... modulo costing a few $k in parts, and no market, and patents, and the supply chain being bought up so even diy is problematic. But upbeat, there's also new human interface devices incoming.
Point is, there's a "Great Software Rewrite" coming. Comparable in scale to writing apps for phones. And thus the opportunity to do better this time.
I use React with Three.js. But... sigh. I miss DisplayPostScript. I'd love a richer type system than PureScript/Idris. A VM with JITed multiple-dispatch PICs. Dylan as it might have become. The shoemaker's children still have no shoes, and we're running out of window to make them. If we don't want another long march on bloody broken crippled gangrenous feet, now's the time to look to making better footware.
But getting the social and market dynamics right is just as important as the technical side. And thus the value of "unit[ing] frontend devs and designers". We have no clue what productive 3D work environments look like. October may see art-focused pen refreshes from both Microsoft and Apple. And maybe new dev machines from Apple. So Linux has work to do to stay competitive. But everyone will have some degree of linux-compatibility. And there seems opportunity to leverage "getting the representation right".
> What could be successful is a Linux distro that unites frontend devs and designers, but where the different tools and building blocks of that distro are used outside of the Linux ecosystem, for professional interface design on other platforms.
A lot of KDE apps work just fine on windows and macOS. Krita, Digikam... the tools are the same for every platform including iOS and Android: Qt, QtCreator. It's made for designers : https://www.youtube.com/watch?v=Ko3YPM_tStM
That goes way beyond OSS. Remember early Windows 95? When every Office release revamped the style guides (button bars are now flat!), Borland applications looked entirely different and there was a plethora of badly mashed together VB5 shareware?
Heck, I remember Amiga-heads complaining about MUI applications…
It's rare that you get something consistent once you throw enough developers at it, especially if different tooling is involved. And this only increases with the age and popularity of the platform…
Most programmers can't design. And designers are only marginally better at it.
Not never as you write but surely very often. For UIs to be gorgeous they should be left to tech savy designers (that is, not painters), not programmers (having the two teams communicate closely though). A programmer usually focuses on functions, bugs, speed, which inevitably detracts the attention from aesthetics or usability, so having some people working exclusively in that field would benefit a lot. Unfortunately not all projects can afford or even find for free a good designer, just like not all FOSS games can get the same amount of graphics primitives as commercial games have.
Consistency is a different problem due primarily to fragmentation (it's thousands developers!) and lack of a central entity benevolently dictating standards also in the GUI field. I was just downvoted by someone who clearly missed my point in yesterday's post about Linus taking some time off: I wrote that Linux would benefit a lot if we had someone like him forcing consistency in the GUI and other fields. It is a necessary "evil" intended to help more developers build a solid single standard until the gap with Windows/MacOS is filled.
The one much more important thing that OSS never did well is managing/making device drivers. I know it's not primarily OSS's fault, but it has made Linux on consumer devices unusable for me and for many others. Unusable or simply non-existant in the case of mobile devices.
And it's a huge shame if you look at the current historical situation, which is, I think, pretty dramatic.
We have a handful of huge, all-knowing corporate gatekeepers taking a ridiculously disproportionate cut of software developers' revenues and restricting what we are allowed to do with our devices.
We are suffering from collective amnesia as to the dangers of the authoritarian surveillance state.
We are struggling with a massive onslaught of organised crime trying to take over our data, our identities, our money and our democracies.
I'm not a computer security expert by any stretch, but it seems pretty clear to me that without controlling the end user device, there is basically no chance of ever being in control of your data.
OSS has failed where it matters most, where it's literally about freedom.
You could argue that it's not OSS that has failed but me not setting the right priorities. I don't deny that, but the choice really shouldn't be that stark.
My girlfriend is far more determined than I am. She does use Linux on her laptop.
But just in the last couple weeks this is what happened:
I had to scan documents for her on my Mac because her scanner driver isn't working properly, creating tiny, grainy images if it works at all.
When I wanted to close the lid on her laptop because we were heading out she shouted "STOP!! I need to switch graphics cards before shutting down or the computer won't boot".
She found her OpenVPN installation to be leaking DNS (again, after fixing it several times).
Her Chrome browser has stopped rendering fonts properly. There are small pixel artifacts, even lines, next to the letters. Before the previous dist-upgrade that wasn't the case but none of the point upgrades since then has fixed the problem (we know what causes this but the fix is tedious to apply and Firefox is working).
Her laptop is running hot. This has always been the case but when the nvidia card is active the heat goes through the roof (hence the constant manual graphics driver switching).
Many days have gone into trying to fix some of these things and some fixes have worked, temporarily, until the next dist-upgrade.
I just can't take this, so I'm withdrawing silently and a bit ashamed into my Apple walled garden.
Device drivers are one of the things I LOVE Linux. Instead of having to install 500 Megabytes of software from a CD or downloading 20 different vendor update tools, it usually is just plug and play. Instantly.
Of course configuration is needed. I doubt that the scanner issue is a driver thing. Are you sure the software is configured to do a full resolution, RGB scan?
Optimus GPU are hell on Windows as well. Never buy laptops with that nonsense. Generally, you cannot expect any random consumer poop laptop to work well. Linux does not work perfectly everywhere but it sure is more compatible than Mac OS when it comes to using your own hardware. Buy a proper business model laptop and it will work 99%. Just like Windows would.
I have mixed experience with drivers on Linux. Recently, my onboard sound card died and I dug out a PCI one. It's about 10 years old but on Linux it just worked. No such luck on Windows 10. Latest official driers were available for Win8 and there was no way to get it to work on anything newer.
But then, anytime I do anything involving printers, it is a huge pain.
> But then, anytime I do anything involving printers, it is a huge pain.
I've not had great luck trying to get random printers to work with Linux, but it's also not something I've attempted in a long time.
For those times when you can choose the printer, the OpenPrinting compatibility database ( https://www.openprinting.org/printers ) is very good. And if you don't want to bother with that, any PostScript printer will work fine.
If you are already stuck with a printer with poor compatibility, you might be in for a bad time, though. :-(
Eh, as far as consumer-priced printers I have 0 issues with any of Brother's printers. I have a basic MFC-J4420DW inkjet at home connected to Windows, macOS and Linux devices - they even provide .rpm and .deb files with their CUPS and Sane drivers.
macOS is definitely the best experience when it comes to printing though, the moment I pop the IP for my printer in and hit add the driver package gets automatically downloaded from Apple and installed.
Let's see it in another way. You aren't permitted to run MacOS (or what's called today) on HW of your choice but only to HW chose for you by Apple. If you try the Hackintosh route, you'll probably find enough little issues like your girlfriend's laptop and you'll next update will always be a leap of faith...
There is a bunch of HW vendors that sell devices with Linux support, like Dell and System76 (the only two that I recall at the moment), I'm happy with a Dell XPS running Debian Stretch.
And having bought one with Ubuntu pre-installed (ASUS 1215B) they aren't without their own little set of issues, like non working wlan drivers 'cause lets just replace the existing working one by a WIP FOSS variant on an OS update,or GPU support that gets removed because AMD decided to reboot their drivers development.
Well, I would say then that Asus after sale support is kinda bad... ^__^;
I think I've read that Dell send all their drivers patches upstream, so you aren't stuck with devices that use a kernel blob that stops to work next time you install a new kernel.
I've an Asus EeeBook (NetOne?) hidden somewhere, I bought it because I wanted to show demand for Linux supported HW but it had too little RAM for my taste and I also had to replace the "NVME" like SSD because it was unbearable slow.
Those two issues were caused by Canonical and AMD.
The wlan driver was when they decided to replace the proprietary one by the FOSS variant, without taking care feature parity was achieved first.
The other one when AMD replaced their drivers, but the new open source one for older cards doesn't provide 1:1 feature parity with their former one, thus preventing the same level of hardware acceleration and OpenGL support.
In both cases the only solution is to dig out old unsupported kernel versions.
I'm thinking about switching from fglrx to AMDGPU with an old Radeon HD 7870 atm. Mind sharing more details? Anything I should watch out for?
Btw there are two open-source drivers for older AMD graphics cards; one is their current, officially-supported open-source driver which had support for a couple of older generations added, and the other is an independent open-source driver which is much older (and supports the _really_ old cards).
The new open source driver for older cards does not have the same OpenGL support level, nor video acceleration. I had to force enable HW acceleration on Firefox, and sometimes it does bring X down when watching videos.
> The one much more important thing that OSS never did well is managing/making device drivers. I know it's not primarily OSS's fault, but it has made Linux on consumer devices unusable for me and for many others. Unusable or simply non-existant in the case of mobile devices.
This isn't OSS's fault. It is Linux's fault, plain and simple.
Because Linux refuses to have a stable driver interface, and goes out of its way to make binary/out-of-tree drivers difficult, we end up in this situation.
Let me guess: your running Ubuntu. I say that because of your reference to "dist-upgrade". On Ubuntu that happens every 6 months. For Debian it's more like 2 years.
Ubuntu is of course mostly Debian, just released 4 times faster. So it runs runs the latest shiny and but has 4 times less testing. It shows in the ways you would expect.
For what it's worth, we are moving to Debian from Windows on our most common install for very similar reasons you say you are ditching Linux: we are sick of things like WiFi drivers dropping out, the latest buggy Chrome being automagically installed. Well that and these are low end laptops, and Windows is very slow, occasionally taking second to response to a click on the start button (or whatever it's called now). Lxde is always instantaneous.
Oh, and why do you expect OpenVPN to be different on the mac?
Exactly correct, I have similar issues to your girlfriend but continue on with my personal machine on Linux. However these driver issues prevent me from ever recommending Linux to anyone else, it's a very poor UX.
I'd take just consistent. Linux userspace people seem to have a culture of doing things different from each other just for the sake of it. How many distributions are there? How many of them are just a change in the default package install list of Ubuntu?
You're right that it'd be awesome to have some singularity of vision, but the problem is that a consistent vision requires a small team, and Linux is, fundamentally, built on C — and C is insufficiently powerful to enable a small enough team to build an operating environment and all applications. Maybe it could have been done in SmallTalk, or in Lisp — but not in C. At least, not by anyone who's not insane (c.f. TempleOS).
And the problem with the languages which are powerful enough is that they tend to attract the sort of people who don't play well enough with others to form large enough teams to build such a project (c.f. The Brilliant Bipolar Lisp Programmer). I don't know how to square this circle.
I myself feel that personal computing is dying because the corporate interests have abandoned it, and for reasons you've listed the OSS world hasn't been able to produce a worthwhile alternative. I've go ideas of what could be done to get us back to a place where personal computing was about empowering the user with simple, consistent, and performant abstractions, but there's a lot of ground to cover and I'm only one guy who is mostly out of his depth. I keep looking for a community that I feel is headed in the right direction to get behind, but sadly it doesn't seem to exist.
I think I may have to face the possibility that there simply aren't enough people who care about personal computing, or at least the things about it that I believe make it worthwhile, for it to survive.
> I intentionally left aside modern UI design trends (fancy animations, shadows, gray blurry lines, flat controls, acid colours, transparency). I like this accurate, clear, grayish, boring UI that just not hinder to get my job done...
Amen! The UI in the screenshots looks very tasteful to me, and it's nice to see somebody not conflating “no-nonsense” with “ugly programmer art”.
While I like the way NeXT looks too (“Lickable, like concrete!”), a lot of the comments are getting wrapped around the axle of skin deep appearances.
What’s exciting to me about this is that someone is chasing the notion of desktop environment built on OpenSTEP-compatible technology. Projects that chase skin-deep appearance of macOS are a dime a dozen.
What would be cool, is if all those developers who’ve written software for macOS could also target Linux and BSD without much trouble. And if disappointed macOS developers could still target macOS while running Linux/BSD day-to-day.
The Etoilé project doesn’t seem to have seen any love in some years, but imagine if they’d continued and Apple was forced to play catch up with some first-class bridges to new and exciting programming languages.
This project is exciting not because it looks good or bad, it’s exciting because it’s the seed of a not-skin-deep reimplementation of a desktop environment on top of GUI technologies whose consistency and viability have been bourne out spectacularly by NeXT and macOS.
Exactly! Look at architecture (https://github.com/trunkmaster/nextspace/wiki/Architecture-a...). NEXTSPACE is a marriage of Linux quite mature technologies (D-Bus, PolKit, systemd) and OpenStep implementation frameworks (GNUstep) to create SPACE where NeXT or NeXT-like applications can live or reborn. Essential part of this is a UX (mature, consistent) with attention to any tiny piece of applications look and feel. That's what I though when started this project.
As someone who is not familiar with OpenSTEP, what are the implications of a desktop built with it?
There are many small things that I like about OS X that never seem to make it into the graphical re-skins. Things like coherence of applications "feel", as well as more tangible features such as consistent and global keyboard shortcuts in every app (ie. Cmd + , for preferences). The visual polish of OS X is the least important thing that makes it usable.
Do you think a project like Nextspace could be the foundation for a Linux desktop experience more on par with the consistency of OS X?
Nextspace seems simply to be two existing projects (with patches) packaged specifically for Red Hat Linux; GNUstep and WindowMaker.
GNUstep's core libraries and build tools are behind Nextspace and Etoile, as well as the GWorkspace environment and the build ecosystem itself; Gorm and Project Center. Gorm is more or less equivalent to NeXT's Interface Builder and Project Center taking on the role of Project Builder (now known as Xcode).
GNUstep is still the foundation and still has parallels with Openstep and Cocoa. Interface consistency is derived from applications using those libraries and components (object relationships, services).
WindowMaker itself uses the WINGs (Wings is not GNUstep) library, which is not really used outside of wmaker and dock apps for it. AppKit and WINGs don't interoperate, which makes the choice of using wmaker for Nextspace questionable when GWorkspace implements window management using PDFKit and other libs, like a GNUstep application should.
Personally, I can't see how this project is any different from GNUstep and WindowMaker apart from a few personal touches (profile.d and .bashrc configuration changes and the like).
Let me clarify some things a bit. GNUstep is a libraries and set of tools for development: Makefile environment (gnustep-make), Gorm (Interface Builder) and ProjectCenter (Project Builder). NEXTSPACE's Workspace was written from scratch and has no any connection to GWorkspace. Workspace and WindowMaker is one application (binary) - it is not "repackaged GNUstep and WindowMaker". Patches for WindowMaker was a quite challenging part of Workspace development process. WindowMaker injected into Workspace minimally uses WINGs.
I know that when I'm developing Linux desktop apps, there are a few things I miss from macOS that I think go back all the way to NextSTEP:
• app bundles, their automatic discovery by and registration with Launch Services, including file-type and URI-schema handler registration (modern addition: inhibited as long as the app-bundle is marked with a quarantine xattr)
• user Launch Agents
• the Keychain
• the guaranteed availability of mDNS, and the ability for apps or services to dynamically register Bonjour/mDNS services (which can then be exposed, or not, via Sharing preferences)
• a centralized system-level caching downloader (nsurlsessiond + nsurlstoraged)
• for that matter, the ability to distinguish "cache files" from other files in such a way that cache files can be purged system-wide in response to storage pressure, with some cache files having higher importance/lower priority than other, depending on their origin app + attributes
• the ~/Library directory, with subdirs for item type (so each type can have separate policies applied—e.g. back up ~/Library/Preferences but not ~/Library/Caches.) ~/.foo/ directories are broken; the XDG standard is closer, but there are no high-level Linux APIs for e.g. accessing preferences that will always use XDG_CONFIG_DIR.
• system and user shared-support directories like /Library/Dictionaries, /Library/Sounds, /Library/Voices, /Library/Widgets, etc; where, when there is an API to access e.g. system sounds, it'll automatically merge /Library/Sounds with ~/Library/Sounds and present that as the available sounds set.
• vendor-neutral system-API-supported user state-file storage dirs, e.g. ~/Library/Cookies, ~/Library/Calendars, ~/Library/Mail, etc. (These state-file dirs were originally supposed to allow interoperation of different user agents that want to sync the same content, e.g. multiple web browsers sharing the same cookie jar. Sadly, we don't see e.g. Chrome or Firefox supporting ~/Library/Cookies as their cookie jar.)
• the guaranteed availability of a Directory Services daemon (opendirectoryd), where a computer that hasn't joined a domain is running a stub Directory Services daemon that exposes virtual records based on local configuration files; and a system accounts API that is just the client interface to the Directory Services daemon.
• Locales being available at the system level, even for e.g. kernel logging
There are also a bunch of other things that I miss from macOS that aren't part of NextSTEP but would be worthy additions, too, like the transparent exposure of filesystem-level versioning as versioned NSData; or libdispatch and its daemon.
Interesting wish list. Some items are quite easy to implement, some require more developer hands. I think after the 1.0 release there will be some distinct shape of the desktop environment and style guide/project plan. We can discuss it then. If you are ready to take some feature to implement - we can join our efforts.
I've spend some time to make keyboard shortcuts consistent across applications and window manager part. My thoughts partly described here https://github.com/trunkmaster/nextspace/wiki/Keyboard. I hope this document help you answer to your question.
I think a lot of that comes from the fact that OS X GUI developers can look to a single authoritative source for a fairly clear set of guidelines.
On the Linux/Unix side, Nextspace can (and, perhaps, should) publish their own guidelines. But, let's face it, it's going to work out like https://xkcd.com/927/
I think it’s more than guidelines. I think it’s the APIs and tooling that provide a happy path for developers to build apps that conform.
I feel that the UI design guidelines plus the developer APIs and tools are self reinforcing.
And yeah, I think NEXTSPACE, by virtue of at least attempting to answer, with software, more comprehensively the questions associated with building a desktop environment with an OpenSTEP implementation could result in a more consistent Mac-like environment. One that’s more Mac-like than a window dressing clone.
Sorry for the late response. The biggest difference to my eyes is the color choices. Although this was many years ago, I recall that the nextstep color scheme was very muted, tending to scale of grays rather than contrasting colors. The wikipedia screenshot seems to confirm my memory.
The nextspace screenshot shows apps and icons with very bright colors. Nowadays icons and apps tend to be colorful, and since they follow different color schemes, a collection of them has a high probability of clashing (e.g. the gray Gimp next to the orange Firefox.)
Nextstep could maintain a consistent aesthetic, I think, because: 1) there were not many apps available on it as there are now on nextspace, and 2) a single company, which had a notoriously style conscious CEO, produced these apps. Nowadays, apps are produced by different groups, with different tastes (let alone skills) in designs.
Nextspace faces the problem of maintaining the muted and clean style of nextstep, in a more diversified world. That's what I was reacting to.
Win 95 literally stole some of the NeXT look. They stole the grey raised borders and the close [X]. They turned the iconize button into a maximize button for some reason.
Oh, 10.6 was so nice, my MBP came with it, it flew, it was fast on 4 GB of ram! Now, the latest MacOS is slow on 16GB of ram, it's the same machine and I still do the same things with it. I don't understand "progress".
For comparison, Windows 2000 has a recommended minimum requirement of 64MB of ram. Windows 95 recommended 8MB. That's the scale of bloat we're talking about. That a modern UI which does essentially the same things can feel unresponsive in any way on several orders of magnitude more resources says a lot about the priorities of modern software developers.
I don’t think they were comparing 2000 to 95, but both if them to modern OSs (in some sense 8MB vs 64MB is such a small difference compared to modern OSs which basically need 8GB minimum)
my favorite MS anecdote: PC Magazine gave a beta 2k install on a CD. I tried it, and it was such an improvement over 98 that I never installed anything else until XP was a ~requirement (mostly a convenience because it embedded more and more recent drivers)
To be frank, that's because the Win 9x line was intentionally designed around the older, less-stable MS-DOS architecture. NT, which is what 2000 was based on, was around for seven years by that point and was remarkably stable. The big problem is that it was compatible with virtually nothing, and it wasn't until Win XP that the business world aligned itself with NT.
Windows 10 with transparency turned off is very clean and usable.
I know I'm going to get a lot of reflexive disagreement on this point for unrelated "because Windows" reasons, but I think this is objectively true. The entire UI is just basic shapes and line drawings.
I agree, and it's not just the appearance, the UX is generally sensible (and little things like keyboard shortcuts for snapping a window to half the screen are very useful). I just wish it weren't so damn buggy. I just had to reinstall because Windows Update got stuck on an install/uninstall update loop. Sigh
Basically what Windows Server comes with iirc. I wish the "Pro" version of Windows 10 was just Windows Server, aka I don't care for a lot of the bloat that Microsoft has to offer to all consumer versions of Windows. If I'm a Pro user let me decide what I want to install.
However, the first and perhaps only modern user interface feature I find lacking in the screenshot is font anti-aliasing. At a regular viewing distance of about three feet, I find the text much more difficult to read than the fonts rendered by Windows 10 elsewhere on my screen.
Enable a quality subpixel font rendering engine onto that tastefully minimal UI and I think you'd have something real nice.
I've tried to use anti-aliasing but for menus and titlebars it looks quite weird to my taste. Maybe it's a libfreetype packaged with CentOS? I don't know. I left this question unanswered for the future.
"No-nonsense" is one thing, but I would caution that there's likely an optimal amount of "nonsense", and it's probably nonzero.
Specifically, I've found through my own user testing that certain "fancy animations" are important to helping users build a correct mental model of the current workflow—taking them away makes the user take longer to learn the application. For example, the window-minimization animation on macOS: it shows you where to find the window you just minimized, by showing you the window "going into" the Dock rather than just disappearing. Or, for another example, disclosure indicators (triangle buttons), where in most modern app frameworks the results sort of "unfold" into place below the indicator, rather than just appearing. Having the results just flash into place, especially if it causes the document (and thus the scrollbar) to change size, tends to disorient the user.
Having as little useless decoration is commendable, but I'd advocate for user testing on mockup versions of the software that contain some minimal animation, vs. those that don't. (Don't trust the user's opinions on which is better; just watch which version they get used to faster. Basically, do the same thing that game developers do when testing interaction mechanics: find the optimal "communication path" between the user and the software.)
Completely agree with you. In NEXTSPACE at this point available animations are: window miniaturizing, application hiding, application launching from File Viewer (icon slides to the place where application icon will be created), dropping icon dragged from Dock and Shelf (icon destroying).
I really like WindowMaker and similar clones, but (warning: ranting) I partially abandoned it because of how absurd it is to try to run a Linux system without DBUS-native tooling, which mostly only exists in GUIs for specific window managers/docks. Unless you're using one of a few popular desktop environments, Linux is a shitshow of bad user interface (and even some of them like Ubuntu seem to lack functionality that used to exist). I'm probably moving to Windows soon just so I don't have to spend days to get an affordable machine from 2 years ago to achieve basic hardware functionality like "graphics" and "wifi".
Interesting. And I've recently moved to FreeBSD and let it imitate a Mac with Xfce, and I have graphics, Wi-Fi, black jack and hookers [1]. I never thought this level of imitation would be possible in the free world.
> I never thought this level of imitation would be possible in the free world.
I've seen (and had at some point) much better results than those seen there (the screenshots here are painful to look at – OMG uneven spacing), at the time based on GNOME 2 (with a GTK patch for the global menu). Even then it's a far cry from being anything remotely like macOS and, while functional, leaks at every seam and reeks of being a shallow imitation: it's meagre coat of paint that flakes all around†. Whenever I am to use a Linux/BSD machine now I'd rather embrace the environment†† instead of attempting to mimic an entirely foreign one.
† To each their own, I'm happy that the author found a good compromise, it's just not one I'm willing to make.
†† Generally using some i3, awesome, or *box (none used as tiling window managers), minimising the use of GTK/QT apps as much as possible (a bit extreme but I visually can't stand them).
Imitation is definitely not the way to go. I have the same problems using Windows and OS X because I'm so ingrained into the Linux desktop that I find it really painful to make quick hacks to OS X to get it working the way I want (OS X might give a more polished "out of the box" experience, but it's also less flexible should you want anything even just subtly different to Apple's vision of the world).
And Windows is just Windows. I don't think there has ever been a commercial platform released that even comes close to how terrible Windows (throughout it's numerous iterations) is.
Very nice. To me, the biggest things I have grown to love since moving to a mac are:
- Spotlight (& I use it far less than most). You mention Desktop Search as the replacement. Have you wired it up to cmd+space?
- Time Machine (the way it handles going back in time for your current Finder window is awesome). For me, an rsync solution is a poor cousin to Time Machine, purely because of the graphic aspect. It would be awesome to know of a FOSS equivalent to it (but would need to work with your current file manager: thunar).
Thanks. I don't use the Desktop Search that often but I think one can bind a shortcut to it. On the rsync, I can mount the remote file system and browse through the backups in the Double Commander or Thunar, so the graphical aspect is fully there. Plus, I have reports in the Terminal when the last successful backup was done. I don't really think I miss anything.
Edit: the rsync setup to do incremental backups and naming backup folders after the day of the week is mentioned on the rsync's home: https://rsync.samba.org/examples.html
It's interesting how much more creative backups can be when you have full control over rsync on which, if I am not wrong, the Time Machine itself is built.
I don't know how Time Machine works, but deja-dup integrates with Gnome's Nautilus. In the backed-up dirs, when selecting a file, it offers a menu entry to revert to a previous backed-up version, based on a date.
It's incredibly easy to start whatever you want from any environment. Normally a wm will come with a way to start apps or run scripts you can start whatever tools you need there.
Example gnome starts pulseaudio if you are run a minimal environment it probably does not depend on a particular sound daemon or have anything to do with sound
so instead if you want pulse you simply run pulseaudio --start in your config.
I've never had a problem with wifi drivers and Linux perhaps because I've always bought devices with good Linux support.
Gpu similar.
Used to be the rule was buy Nvidia install official drivers, no step 3. Now newer amd are supposed to be well supported with just open source drivers.
Honestly before I buy hardware I search insert hardware +Linux and if I can't find anything or discover issues with no obvious solutions I buy something else and experience few problems.
DBus was a joint effort to build a common messaging system to be used in all desktop environments, in particular to get away from the individual incompatible brokers that Gnome and KDE used at the time. Lennart Poettering had nothing to do with this, his first commit was in 2009, 4 years after 1.0 and 7 years after the project was started.
What you are referring to is probably Kdbus, a failed initial attempt to move parts of DBus into the kernel.
When I switched from Amiga to Linux in 1995 I thought that I will have a perfect NeXTSTEP clone within a few months. I saw pictures of GNUStep and it looked nearly ready to go.
I've not dug deeper than reading the page and looking at the screenshots, but it looks like he’s making some sane default choices such as to use WindowMaker for the dock rather than GWorkspace’s dock. And it appears he's working to put more and more into the Prefs app (rather than, for example, configuring WindowMaker through WindowMaker’s preference manager app).
GNUStep already has quite a lot there for making a desktop. What it’s lacking is the implementation of the desktop. This, on the surface, appears to be an attempt to round that out.
WindowMaker is a completely isolated C implementation with its own GUI toolkit. It's not integrated at all with the rest of GNUStep. It only appears NeXT-like, it's a facade.
GNUStep should ulimately replace it, if this is to be some kind of NeXTSTEP replica beyond skin-deep appearances.
Workspace is a new application that contains WindowMaker. And it _is_ fully integrated with GNUstep applications. This is not a facade, this is how OPENSTEP feels. Just give it a try.
That’s fair. He at least appears to have created a configuration app that is a integrated with prefs, which makes the alienness of WindowMaker less exposed.
On the other hand the dock in GWorkspace is pretty non-functional by comparison.
Considering I spend 99% of my time either in a terminal or a web browser, I don't think it will have too much of an affect, unless the UX of either of those two are diminished. For years I used a very barebones Linux desktop (a minimalist tiled VM) and was very happy and productive with it. The former is largely why.
But I don't think the point was a 'better' desktop but an interesting or experimental one. Or simply just for fun.
We can often relearn valuable things from the past by recreating them. It's usually not enough to just look at pictures of it or hear stories. Plus many "new" UX and software problems were dealt with in the past and reappear later with new platforms, hardware, and UI concepts which start over from scratch.
I'm using CDE on Linux (originally Debian but now Ubuntu) and do nearly everything in a Chrome or Console window. Everything works as expected and I like the old, flat, motif look.
Thanks for the naming explanation linked in the readme. That almost seems like a case study to warn of the dangers of using case sensitivity to reference different things.
I miss the NeXTSTEP menus, that Mac toolbar is horrid on large monitors. Also, the Finder is a poor second compared to Workspace Manager. The lack of EOF and the Digital Librarian is painful.
I have a 34” monitor, so scrolling up to the upper left every time I need to select a menu item is horrid. Plus, they got rid of the amazingly useful tear off menu customization. The Mac toolbar is a big step backwards.
Then just use CTRL-F2, it's a shortcut to select the menu item. Although with such a big monitor, I'd say the biggest challenge is to move your eyes all the way up to where the menu bar might be. Unless of course you're sitting 10 feet away.
Ok, but missing the point if I have to use a keyboard to make it work better. The menu bar on the NeXT was a joy, obvious, and right next to where I was working.
The KDE/Gnome schism really divided the mindshare of the open *nix desktop. If we’d gone this route, I like to imagine the differences between Mac and Linux or BSD would be small enough that
- Mac apps would be a recompile away from running on Linux
And
- Linux would be a viable developer environment to target macOS
Apple’s commitment to the desktop has waned and caused some longtime users like me to go back to Linux/BSD. Meanwhile, desktop facilities on Linux/BSD have lacked coherence and singularity of vision. A viable, modern post-OpenSTEP Linux and BSD desktop would have the capacity to keep Apple honest, while giving the Free community a benchmark for consistency.
I’d love to see something like this project blossom into a 3rd way GUI layer for Linux and BSD.