And if you want to go farther back, even if it wasn't called "mmap" or a specific function you had to invoke -- there were operating systems that used a "single-level store" (notably MULTICS and IBM's AS/400..err OS/400... err i5 OS... err today IBM i [seriously, IBM, pick a name and stick with it]) where the interface to disk storage on the platform is that the entire disk storage/filesystem is always mapped into the same address space as the rest of your process's memory. Memory-mapped files were basically the only interface there was, and the operating system "magically" persisted certain areas of your memory to permanent storage.
I guess the author didn't use that many other programming languages or OSes. You can do the same even in garbage collected languages like Java and C# and on Windows too.
I'd be careful though, as they all have quirks due to how tricky it is handling mmap faults. The Java API mentions both unique garbage collection behavior and throwing unspecified exceptions at unspecified times.
You cannot replicate the full filesystem among multiple hosts with their own drives though, can you?
With OSTree my team can deploy a commit over an existing ones to a field of 60k embedded Linux devices. Similarly bootc is a great alternative for deploying images for dedicated or virtualized servers.
Ribbon also has a similar research behind it, just like Windows 95. For what they designed it, allowing beginners to discover all the functionality that's available, it works perfectly.
I think most of the complaints from the tech circles are completely unfounded in reality. Many non-tech people and younger ones actually prefer using Ribbon. I also like it since it is very tastefully made for Office. 2010 was my favorite Office UI. It actually doesn't get rid of shortcuts either. Most of the Office 2003 ones were preserved to not break the workflow of power users.
Where Ribbon doesn't work is when you take out the contextual activation out of it. Most companies copied it in a very stupid way. They just copied how it looks. The way it is implemented in Sibelius, WinDBG or PDFXChange is very bad.
> I think most of the complaints from the tech circles are completely unfounded in reality. Many non-tech people and younger ones actually prefer using Ribbon.
Well, yes, but that observation doesn't prove the point you think it does.
People who were highly experienced with previous non-ribbon versions of Office, disliked the ribbon, because the ribbon is essentially a "tutorial mode" for Office.
The ribbon reduces cognitive load on people unfamiliar with Office, by boiling down the use of Office apps to a set of primary user-stories (these becoming the app's ribbon's tabs), and then preferentially exposing the most-commonly-desired features one might want to engage with during each of these user stories, as bigger, friendlier, more self-describing buttons and dropdowns under each of these user-story tabs.
The Ribbon works great as a discovery mechanism for functionality. If an app's toplevel menu is like the index in a reference book, then an app Ribbon is like a set of Getting Started guides.
But a Ribbon does nothing to accelerate the usage of an app for people who've already come to grips with the app, and so already knew where things were in the app's top-level menu, maybe having memorized how to activate those menu items with keyboard accelerators, etc. These people don't need Getting Started guides being shoved in their face! To these people, a Ribbon is just a second index to some random subset of the features they use, that takes longer to navigate than the primary index they're already familiar with; and which, unlike the primary index, isn't organized into categories in a way that's common/systematic among other apps for the OS (and so doesn't respond to expected top-level-menu keyboard accelerators, etc, etc.)
I think apps like Photoshop have since figured out what people really want here: a UI layout ("workspace") selector, offering different UI layouts for new users ("Basic" layout) vs. experienced users ("Full" layout); and even different UI layouts for users with different high-level use-cases such that they have a known set of applicable user-stories. A Ribbon is perfect for the "Basic" layout; but in a "Full" layout, it can probably go away.
This is it. Ultimately the best interfaces are designed for experts, not beginners. "Usability" at some point became confused with "approachability", probably because like in so many other areas, growth was prioritized over retention. It's OK if complex software is hard to use at first if that enables advanced users to work better.
Really, the most efficient interfaces are the old-style pure text mode mainframe forms, where a power user can tab through fields faster than a 3270-style terminal emulator can render them.
> I think apps like Photoshop have since figured out what people really want here: a UI layout ("workspace") selector, offering different UI layouts for new users ("Basic" layout) vs. experienced users ("Full" layout); and even different UI layouts for users with different high-level use-cases such that they have a known set of applicable user-stories. A Ribbon is perfect for the "Basic" layout; but in a "Full" layout, it can probably go away.
In the linked case study on Windows 95 they specifically tried this, creating a separate beginner mode for the Windows shell. Their conclusion was that it was a bad idea and scrapped it because it doesn't allow for organic learning and growth of a beginner into a power user on account of the wall between modes. Instead they centralized common tasks into the Start menu. I'm not sure how you would translate that learning to the design of Office or Photoshop though. Maybe something like Ribbon, but as a fixed "press here to do common actions" button in the app? Then next to that "start button" put the full power user index of categorized menu buttons?
I think PrusaSlicer does this in a reasonable way. (Context: this is software for preparing files for 3D printers.)
It has three modes: Simple, Advanced, Expert. They are all the same UI design, all it does is hide some less common settings to not overwhelm users. Each level is also associated with a colour, and next to each setting is a small dot with that colour: this allows you to quickly scan for the more common settings even if you showed all of them at Expert. At Expert there are easily over a thousand different settings organised into a 2-level hierarchy.
I really like this take! A couple years ago I wrote a throwaway blog about learning curves in user design[0] but the thought has stayed with me a lot since then.
It's especially tricky because things are contextual. I use Helix as an editor which has a steeper learning curve than, say, VSCode, but is way faster once you're up and running with it.
But by contrast, I also really like LazyGit, which is a lot quicker to learn than the git CLI, but since all I do is branch, commit an push, makes my workflow a lot more efficient.
There's such a complex series of trade offs, especially if products want to balance bith. I always feel a little sad how much interfaces have skewed towards user friendliness over power. Sometimes it feels like we've ended up in a world of hurdy-gurdies with no violins.
I forgot the early release but ribbon seemed to have fuller keyboard shortcut and could be hidden entirely. Leaving power users with more space and faster command triggers isn't it ?
Yes, the ribbon also showed you the appropriate keyboard shortcut. My last job in the Navy involved a lot of converting mail merge-style Word docs to PDF for digital signature and so I became very adept at using keyboard shortcuts in Word and it was all right there in the ribbon.
It was different from Word 2003, but that was about all the bad you could say for it from the 'power user' perspective.
The thing that bothers me more than ribbon itself is how much the performance started degrading once they introduced it.
I got MS Office 97 working in Wine recently, and it's still shockingly capable. There are lots of formatting options, it can read my system TTF fonts, and it's since it's nearly thirty-year-old software, it runs ridiculously fast on modern computers.
I don't feel like MS has added many more features to Office that I actually care about, but I feel like the software has gotten progressively slower.
Forget modern computers. I booted up my dad's COMPAQ from 1998, running Windows 2000, and was blown away by the speed and logical layout of the applications. I have to grit my teeth using W11 File Explorer because of what I recently re-experienced.
I imagine Office 365 is to Office 97 as FIFA 23 is to FIFA 97, in that it's still essentially the same idea and can never be otherwise, but the later versions are designed to draw new people in.
I’ve said before that I don’t think there’s anything missing in Office 2000 for upwards of 90% of users’ word processor/spreadsheet/etc needs, and this is supported by the popularity of the somewhat spartan GSuite apps (Docs is basically WordPad with realtime collab tacked on, not even a full Word 2000 equivalent for example).
> It’s also stupid in terms of screen real estate.
You can't really blame MS that around the same time screen manufacturers started to switch to 16:9 for cost reasons and cheap laptops all only offered a 1366x786 resolution.
The whole "UIs got smaller because the aspect ratio got more rectangular" thing never really made sense to me because 786 > 600. The screens got bigger in both dimensions, regardless of them getting bigger in one more than they got bigger in the other.
It doesn't really act that way, as (1) it can't be accessed with keyboard shortcuts and (2) it's difficult to scan for the desired feature as it's a visual jumble of buttons and text. Oh, and it might not be visible! Sometimes features can only be found in pop-out dialogs.
Having used Office products for 30+, my most-used feature of the Ribbon is Search, because I don't have time to waste hunting through a poorly-organised heap.
To your (1), if you tap Alt all of the alt keys current available show up next to their associated buttons. (Top level menu). Hit the letter for where you want to go and it than will show you the next set of alt keys (available items on the ribbon itself). You can also use the arrows to move around the menus or tabs when in this mode. It isn't obvious but the ribbon, as office implemented it, is very keyboard accessible.
But then, you have to learn the sortcuts (if there are any) or click first to open it, then click button/funciton, which is 50% slower.
Also, classic button bars were customizable. You could add/remove/group buttons in any order you like. And there were lots and lots of buttons that were not present in any of the default toolbars. The ribbon is fixed AFAIK.
Ribbon has some good elements to it, but other elements are questionable at best. Sizing of buttons for example feels completely arbitrary and not connected to frequency of use or anything else obvious.
I think the best parts of it could be replicated by just combining tabs and traditional toolbars, but that’s not complex enough of a concept to need a dedicated moniker.
I think the ribbon is terrible. When you are looking for something, you can't just look in one direction but you have to scan up and down. Then it may be text or just an image. And the thing you are looking for may be on some other ribbon page.
I much prefer menus with toolbars that have only the most used functions.
Mine too. Office 2010 was what made me switch back to Windows after using Linux and OpenOffice for years.
I found the ribbons to be perfect for my use of Office. They usually automatically focused on the task at hand. Everything else was just a click away. Advanced stuff stayed in the menu.
And, at least for me, it helped discoverability of features.
> For what they designed it, allowing beginners to discover all the functionality that's available, it works perfectly.
Sure, but where are the beginners are we talking about? In 2007, Microsoft office had long reached dominance in the workplace and school such that the only beginners are students learning word prcessing for the first time.
The Ribbon is a disaster. Compared to conventional toolbars, it fails across several metrics.
When it first came out, I did studies of myself using it vs. the older toolbared versions of Word and Excel, and found I was quantifiably slower. This was after spending enough time to familiarize myself with it and get over any learning curve.
EFFICIENCY
The biggest problem is it introduced more clicks to get things done - in some cases twice as many or more. Having to "tab" to the correct ribbon pane introduces an extra click for every task that used to be one click away, unless the button happens to be on the same tab. Unfortunately the grouping wasn't as well thought out as it could have been. It was designed with a strong bias for "discoverability" over efficiency, and I found with many repetitive tasks that I commonly carried out, I was constantly having to switch back and forth between tabs. That doesn't even get into the extra clicks required for fancier elements like dropdowns, etc. And certain panes they couldn't figure out where to put are clearly "bolted" on.
KEYBOARD SHORTCUTS
At the same time, Microsoft de-emphasized keyboard accelerators. So where the old toolbar used to hint you the keyboard shortcut in a tooltip every time you rested your mouse over a button, the new one doesn't - making it unlikely users will ever learn the powerful key combos that enable more rapid interaction and reduce RSI caused by mousing (repetitive strain injury). In my case this manifests as physical pain, so I'm very aware of wasteful gestures.
SCREEN REAL ESTATE
The amount of text in the button captions on the ribbon is also excessive. It really isn't a toolbar at all, more of a fancy dropdown menu that's been pivoted horizontally instead of vertical. It turned the menu bar, which used to be a nice, compact, single line, into something that now takes up ~4x as much vertical screen real estate. As most users' monitors are in landscape orientation, vertical space is scare to start with; congratulations you just wasted more of those precious pixels, robbing me of space to look at what I really care about which is the document or whatever thing I'm actually working on.
DISCOVERABILITY
You used to be able to get a good sense of most software's major functionality by strolling through all the menu options. Mastery (or at least proficiency) was straightforward. With the more dynamic paradigm Microsoft adopted along with the Ribbon, there's lots of functionality you don't even see until you're in a new situation (or that's hidden to the responsive window layout, which is ironic - instead of making the thing more compact, they made portions of it disappear if your window is too small). I grant some may argue this has benefits for not appearing as overwhelming to new users (although personally I've always found clean, uniform, well thought out menus to be less jarring than the scattered and more artistically inclined ribbon). But easing the learning curve had the trade off of making those users perceptually stuck in "beginner" mode. They can't customize the ribbon as meaningfully (I used to always tailor the toolbar by removing all the icons I already knew the keyboard shortcuts for, adding some buttons that were missing like Strikethrough, and move it to the same row as the menu bar to maximize clientarea space)
In my case, after trying out the new versions for a year, I made an intentional decision to go back to the 2003 versions of Word and Excel, and never look back (forward?). They are my daily drivers. These days, I barely touch modern versions of Word and Excel, except for the very rare instance I actually need a specific new feature (i.e. a spreadsheet with more than 65k rows). If someone asks me to use the new version, I simply refuse (which has never been a showstopper - my work quality is preeminent, and once you get past policy bureaucracy it turns out clients/employers don't care what tool I use to get it done).
The whole point of a toolbar was always to be a place you could pin commands you want instant access to, just a click away. The ribbon shredded that paradigm, and in my opinion took us a marked step backward in computing. It fails across several metrics, compared to regular toolbars. I wanted to blog about it at the time in hopes of convincing the world it was a mistake, but didn't have the free time. 20 years later, I'm curious if more people share these sentiments and acknowledge its shortcomings.
> So where the old toolbar used to hint you the keyboard shortcut in a tooltip every time you rested your mouse over a button, the new one doesn't
Although it is bad that it does not display the keyboard shortcuts, you can push ALT and then it will tell you which letter to push next. (I just guessed that pushing ALT might do something (possibly display a menu?), and I was correct (it did not display another menu, but it did help).) This is not quite as good as using the other keys such as CTRL, or numbered function keys, but it is possible.
(I do not use those programs on my own computer, but on some other computers I sometimes have to, and this helps, although not as well as it would to use menus and other stuff instead. However, in some cases I was able to use it because of knowledge of older versions of Microsoft Office; many of the keyboard commands are the same.)
I think the menu bar is much better, and toolbars should not be needed for most things. With the menu bar it will underline the letters to push with ALT and also will tell you what other keys to use (if any) for that command. (One thing that a toolbar is helpful for is to display status of various functions that can change, such as the current font. Due to that, you might still have a toolbar, but you do not need to put everything in the toolbar. Perhaps combine the toolbar with the status bar to make it compact.)
(Something else that would improve these word processing software would be the "reveal codes" like Word Perfect. A good implementation of reveal codes would avoid some of the problems of WYSIWYG. For spreadsheet software, arranging the grid into zones, and assigning properties (including formatting and formulas) to zones, and making references work with zones, etc, would be helpful, but I don't know that any existing software does that.)
In my own software I do try to make the display compact so that there is more room for other stuff, instead of needing to put all of the commands and other stuff taking up too much space in the screen. Good documentation is helpful to make it understandable; this would work much better than trying to design the software to not need documentation, since then the lack of doumentation makes it difficult to understand.
allowing beginners to discover all the functionality
How many beginners were there in 2007? Hardly any, PC and "Word" penetration was pretty close to 100%. We are still stuck with "beginners have to figure this out" interfaces in 2026.
I don't buy it. My generation used pre-Ribbon Office, from elementary school onward, just fine. It wasn't made for children; it was made for Boomers who couldn't grok the menu-based interface. Not old people; prime workforce-aged Boomers who were intimidated by computers, but who were being dragged kicking-and-screaming into the Information Age by their jobs. It was just another example of the infantilization of interfaces provided to that generation whenever they whined about not wanting to learn, or being scared by, something new. Everyone else just got dragged along with them.
Flatpak is basically running an isolated separate distro. A software inside a Flatpak has to communicate with the outside world to do anything useful which is yet another API surface that needs to be maintained and it will be dropped just like gtk2 when people just don't want to maintain it.
I think the way the Linux ecosystem works is fundamentally against maintaining old binaries unless they are a text-only program.
The average developers suck. The distribution is also unbalanced. It is bulkier on the low-skill side.
Great UIs are written by above average or even exceptional developers. Such experience is tied to the real-life reasoning and combining unique years-long human experience of interacting with the world. You need true general intelligence for that.
Cross platform GUI libraries suck. Ever used a GTK app under Windows? It looks terrible, renders terrible, doesn't support HiDPI. Qt Widgets still have weird bugs when you connect or disconnect displays it rerenders UIs twice the size. None of those kinds of bugs exist for apps written in Microsoft's UI frameworks and browsers.
The problem with cross platform UI is that it is antithetical to the purpose of an OS-native UI in its reason of existence. Cross platform tries to unify the UX while native UI tries to differentiate the UX. Native UI wants unique incompatible behavior.
So the cross platform UI frameworks that try to use the actual OS components always end up with terrible visual bugs due to unifying things that don't want to be unified. Or worse many "cross platform" UI frameworks try to mimic the its developer's favorite OS. I have seen way too many Android apps that has "cross platform" frameworks that draw iOS UI elements.
The best way to do cross platform applications with a GUI (I specifically avoid cross platform UI) is defining a yet another platform above a very basic common layer. This is what Web had done. What a browser asks from an OS is a rectangle (a graphics buffer) and the fonts to draw a webpage. Nothing else. Entire drawing functionality and the behavior is redefined from scratch. This is the advantage of Web and this is why Electron works so well for applications deployed in multiple OSes.
I have created and used them. They didn't look terrible on windows.
>What a browser asks from an OS is a rectangle (a graphics buffer) and the fonts to draw a webpage. Nothing else. Entire drawing functionality and the behavior is redefined from scratch. This is the advantage of Web..
I think that is exactly what Gtk does (and may be even Qt also) too..
I think it is just there there is not much funding going to those projects. Web on the other hand, being an ad-delivery platform, the sellers really want your browsers to work and look good...
There's loads of funding. But the ones funding Qt and GTK aren't parties interested in things like cohesion or design standards. They just needed a way to deliver their product to the user in a faster way than maintaining 2-3 OS platform apps. Wanting that shipping velocity by its nature sacrifices the above elements.
The remnants of the dotcom era for web definitely helped shape it in a more design contentious way, in comparison. Those standards are created and pushed a few layers above that in which cross platform UI's work in.
Here is Bleachbit, a GTK3-based disk cleanup utility. It is a blurry mess and GTK3 Window headers are completely out of style and behavior with Windows.
> I think that is exactly what Gtk does (and may be even Qt also) too..
The problem is they half-ass it. Qt only does it with QML. Qt Widgets is half-half and it is a mess.
Overall these do not invalidate my point though. If you want a truly cross-platform application GUI, you need to rewrite the GUI for each OS. Or you give up and write one GUI that's running on its own platform.
> I think it is just there there is not much funding going to those projects. Web on the other hand, being an ad-delivery platform, the sellers really want your browsers to work and look good...
Indeed, Google employs some of the smartest software developers and ones with really niche skills like Behdad Esfahbod who created the best or the second best font rendering library out there. However, Qt has a company behind (a very very incompetent one, not just the library but operating a business). I have seen many commercial libraries too, they are all various shades of terrible.
Or -hear me out- we can put these long I beams on the ground and put some cables above. Then tie 50 trucks to each other and they can get whatever kind of electricity from anything you can make electricity out of.
Well we already have a lot of those, at least in North America (best freight rail system in the world), and it might make sense to build even more tracks in some areas. But rail will never be practical for time-sensitive cargo. It just takes too long to assemble a train and move cars through switching yards. We're always going to need a lot of trucks no matter what.
Sort of. The locomotives are diesel electric series hybrids. Which means you can make one that can travel anywhere that isn't electrified but add a pantograph to it for minimal additional cost and then stop burning diesel anywhere that is, and electrify the lines piecemeal.
Add a battery car and you only have to electrify a minority of the lines to be off diesel a majority of the time.
Truely rail-fans are transportation equivalent to vegans in food or cross-fit in exercise. I've spent many an hour on the Isle of Sodor and appreciate how useful those engines are in so many contexts. Yet still, there are buses that move alongside Percy, and pick up stranded passengers, and the Fat Controller (aka Sir Topham Hat) still has a sedan. It's a multi-modal world out there and the tractor trailer still has a place in it.
It is not the economies of scale but entry cost increase per each new player entering the same market. The real world markets are guarded, price fixing oligopolies.
The most important thing a startup is expected to do is not to get profitable quick but suffocate all possibilities of competition. Dysfunctionality is not a bug, it is a feature of our economic system.
reply