OS News Archive

Remembering Windows 3.1 themes and user empowerment

The rise of OSX (remember, when it came along Apple had a single-digit slice of the computer market) meant that people eventually got used to the idea of a life with no desktop personalization. Nowadays most people don’t even change their wallpapers anymore. In the old days of Windows 3.1, it was common to walk into an office and see each person’s desktop colors, fonts and wallpapers tuned to their personalities, just like their physical desk, with one’s family portrait or plants. It’s a big loss. Android and Linux desktops still offer massive amounts of personalisation options – thank god – but the the other major platforms have all individuality stamped out of them. It’s boring.

Genode’s roadmap for 2021

Herein, we lay out our plans for evolving Genode. Progress in addition to this planning will very much depend on the degree of community support the project will receive. The Challenges page collects some of our ideas to advance Genode in various further directions. The road map is not fixed. If there is commercial interest of pushing the Genode technology to a certain direction, we are willing to revisit our plans. This is a very detailed roadmap, but as clearly mentioned in the opening paragraphs, this is not set in stone, and things may change. Most of the planned focus seems to be on vastly improving support for ARM, for instance by working on bringing Genode to the PinePhone. They also want to streamline and improve the process for porting Linux device drivers to Genode, which should help in increasing hardware support.

A week with Plan 9

I spent the first week of 2021 learning an OS called Plan 9 from Bell Labs. This is a fringe operating system, long abandoned by its original authors. It’s also responsible for a great deal of inspiration elsewhere. If you’ve used the Go language, /proc, UTF-8 or Docker, you’ve used Plan 9-designed features. This issue dives into operating system internals and some moderately hard computer science topics. Sounds like an excellent article for us!

Redox OS 0.6.0 released

A number of new projects have been introduced during this release cycle, and many improvements have been landed. Very many bugs have been squashed. This list is an extreme over-simplification of the thousands of commits done since the last release. Hopefully, releases will happen more often so this is not always the case. • rmm, a complete rewrite of the kernel memory manager. This has eliminated kernel memory leaks, which became quite an issue with the previous memory manager. Additionally, multi-core support is far more stable.• Much of the work of RSoC, sponsored by donations to Redox OS, has been integrated into this new release. This includes work on ptrace, strace, gdb, disk partitioning, logging, io_uring, and more.• relibc has seen a large amount of work, culminating in improvements for anything that depends on it (i.e. everything in userspace). Redox is a UNIX-like operating system written in Rust, running on a microkernel.

BASIC-DOS: PC DOS reimagined

So over 40 years ago, if Microsoft and IBM had partnered just a little bit sooner, if they’d been able to predict how popular the platform would become, if they could have harnessed more of its power, and if Microsoft had been able to build more synergy between their flagship BASIC product and the underlying “Quick and Dirty” operating system, how dramatic could the impact have been? It’s impossible to know with any certainty. However, what’s not impossible is creating that product today, and to see for ourselves what the IBM PC was really capable of from “Day One.” And that was the inspiration for BASIC-DOS, a product (well, just a proof-of-concept at this point) that combines the power of BASIC with a multitasking DOS. A fascinating bit of alternative history, and one that goes beyond mere words – BASIC-DOS is in development as a retro-programming project, and is intended to be released next year. You can get a preview of what’s to come, and follow development on the blog.

OpenZFS 2.0 release unifies Linux, BSD and adds tons of new features

This Monday, ZFS on Linux lead developer Brian Behlendorf published the OpenZFS 2.0.0 release to GitHub. Along with quite a lot of new features, the announcement brings an end to the former distinction between “ZFS on Linux” and ZFS elsewhere (for example, on FreeBSD). This move has been a long time coming—the FreeBSD community laid out its side of the roadmap two years ago—but this is the release that makes it official. A massive release.

Introducing the OSNews Patreon

Since OSNews’ inception in 1997 – yes, this site is that old – a lot has changed on the internet when it comes to earning income. While for a very long time a site like OSNews could sustain itself through revenue from basic ads alone, we’re now far beyond the point where that is feasible – unless we were to introduce ever more intrusive ads, which we’re obviously not going to do. Our readers are, of course, keenly aware of how expensive it can be to run a website like OSNews, and as such, many of you have asked us over the years for methods of supporting the website financially. We’ve always had a subscriber program for an ad-free version of the site, but we never really advertised it very heavily. Today, that’s going to change. You can now support OSNews by becoming an OSNews Patreon. With your support, we can keep posting stories every single day, pay the hosting bills, write more interesting articles, access interesting hardware to review for your amusement, and possibly expand into new territories like video reviews to accompany the regular written reviews. Your support will enable us to write reviews of older, vintage devices and software like Palm PDAs, Psion devices, old operating system versions, and much more. We’ve created three tiers – Silver, Gold, and Platinum – and at each of these tiers you’ll get the ad-free version of OSNews, as well as a silver, gold, or custom comment flair to show off your status as an OSNews Patreon. All of our readers are equal, of course, but OSNews Patreons are just a little more equal. If you want to support the continued work we do, head on over to the OSNews Patreon page and become an OSNews Patreon. Thank you – all of you, not just OSNews Patreons – for supporting the site! Important note: since Patreon has ended support for their API, we are not investing engineering hours into full integration of Patreon into OSNews. This means we have to add the rewards to your OSNews account manually. As such, it may take a few hours before your rewards are added to your account, depending on time zones, availability of OSNews staff, and so on. We will obviously do our best to make this process as quick as possible, but please bear with us. Frequently (?) Asked Questions Does this mean OSNews will start putting content behind Patreon-only paywalls? No. All of the stories and articles we post will remain freely available as they always have been, and even future articles made possible through Patreon supporters will always be available to everyone. The goal of the OSNews Patreon is to support OSNews as a whole, not just a small part of it. Can you give some examples of the kinds of articles you want to write that are impossible to do without more financial support? Sure! A great example of an article – or, more likely, series of articles – that I’ve been dying to write is one about one of the last Sun UltraSPARC multiprocessor workstations, fitted with one of the later SunPCI cards. I’m a huge fan of Sun’s workstation hardware, but getting access to relatively old and outdated hardware like this is surprisingly expensive. A successful Patreon could make this a reality. I also have a massive collection of PDAs, from the late 80s all the way up to the 2000s, that I would love to write more about. That takes a lot of time, and with the support of the OSNews Patreon I might be able to set aside time from my regular job to focus more on writing articles for OSNews. There are tons of other interesting topics that require expenses too, such as SGI’s IRIX, or Psion devices, or even modern computers like the new M1-based Macs. Will you introduce more tiers and benefits in the future? Possibly. We have a few other ideas that we need to flesh out further and reconsider before making any commitments. Why is the pricing in euros, and not in dollars or Canadian rubles? The pricing is set in euros, but Patreon shows the amounts converted to your local currency. Some users may still see the euro pricing, however, for instance when using a VPN. Can I cancel my Patreon or upgrade/downgrade to a different tier? Yes. Patreon as a platform offers all of these options at any time, so you’ll never have to feel tied down or locked into or out of a certain tier.

25 years in speech technology and I still don’t talk to my computer

Why has it taken until the last few years for speech recognition to be adopted in day-to-day use? The technology has many hidden industrial applications, but as a real-time user interface for day-to-day use, i.e. talking to your computer, adoption has been unbelievably slow. When I was studying in the 90s, I read about a sort of reverse Turing test, which demonstrated one reason why. Volunteers believed they were talking to a computer, but responses were actually provided by a human being typing “behind the curtain”. The observations and subsequent interviews showed that, back then, people simply didn’t like it. So, what’s the problem? We have a Google Home in the house, and we basically only use it to set kitchen timers and find out the outside temperature (so we know how many layers to put on – we live on the arctic circle, and -25-30°C is normal). That’s it. I don’t see much of a use for anything else, as our computers and smartphones are both easier to use and faster than any voice assistant or voice input. The key to modern voice assistants is that they are basically glorified command line interfaces – they need a command and parameters. What makes them so hard to use is that these commands and parameters are pretty much entirely undiscoverable and ever-changing, unlike actual command line interfaces where they are easily discoverable and static. If voice input and voice assistants really want to take off, we’ll need to make some serious advances in not just recording our voices and mapping them to commands and parameters, but in actually understanding what we as humans are saying. We’re a long way off from that.

Definitely not Windows 95: what operating systems keep things running in space?

The ESA’s recently launched Solar Orbiter will spend years in one of the most unwelcoming places in the Solar System: the Sun. During its mission, Solar Orbiter will get 10 million kilometers closer to the Sun than Mercury. And, mind you, Mercury is close enough to have sustained temperatures reaching 450°C on its Sun-facing surface. To withstand such temperatures, Solar Orbiter is going to rely on an intricately designed heat shield. This heat shield, however, will protect the spacecraft only when it is pointed directly at the Sun—there is no sufficient protection on the sides or in the back of the probe. So, accordingly, ESA developed a real-time operating system (RTOS) for Solar Orbiter that can act under very strict requirements. The maximum allowed off-pointing from the Sun is only 6.5 degrees. Any off-pointing exceeding 2.3 degrees is acceptable only for a very brief period of time. When something goes wrong and dangerous off-pointing is detected, Solar Orbiter is going to have only 50 seconds to react. Fascinating look at a piece of software few of us will ever get to work with.

Non-POSIX file systems

Operating systems and file systems have traditionally been developed hand in hand. They impose mutual constraints on each other. Today we have two major leaders in file system semantics: Windows and POSIX. They are very close to each other when compared to the full set of possibilities. Interesting things happened before POSIX monopolized file system semantics. When you use a file system through a library instead of going through the operating system there are some extra possibilities. You are no longer required to obey the host operating system’s semantics for filenames. You get to decide if you use / or \ to separate directory components (or something else altogether). Maybe you don’t even use strings for filenames. The fs-fatfs library uses a list of strings, so it’s up to the caller to define a directory separator for themselves. While working on that library, I was driven to write down some ideas that I’ve previously run across and found inspirational. A deep dive into file system hierarchies before the major platforms we used today – POSIX and Windows – became the two de-facto standards. Excellent article, and a joy to read.

M2OS: RTOS with simple tasking support for small microcontrollers

M2OS is a small Real-Time Operating System that allows running multitasking applications in small microcontrollers with scarce memory resources. M2OS implements a simple scheduling policy based on non-preemptive one-shot tasks which requires a very small memory footprint. Moreover, with this scheduling policy the same stack area can be used by all the tasks and, consequently, the system only needs to allocate a stack area large enough to fit the largest task stack. It’s quite rare we find an operating system that’s actually never been mentioned on ONSews before. To be fair, it’s only been around since March of this year and it’s highly niche, but still.

You can now debug programs using GDB on Redox OS

Now, the reason for not finishing is that I’m basically done! That’s right, GDB has served us reliably for the past few weeks, where we’ve been able to debug our dynamic linker (ld.so) and find problems with shared libraries. We got to the point where the amazing @bjorn3 has managed to run his first rust program compiled on Redox using his rustc cranelift backend! While obviously we would’ve found the bugs without gdb eventually, I’d love to attribute enough credit to it that it warrants being posted here! Redox OS is an operating system written in Rust.

Genode 20.05 released

Genode 20.05 takes our road map’s focus on the consolidation and optimization of the framework and its API to heart. It contains countless of under-the-hood improvements, mostly on the account of vastly intensified automated testing, the confrontation of Genode with increasingly complex software stacks, and stressful real-world work loads. You will find this theme throughout the release notes below. The result of this overhaul is captured in the updated version of the Genode Foundations book (Section New revision of the Genode Foundations book). I wish every project had release notes as detailed as Genode’s always are. Excellent work.

Visopsys 0.9 released

Visopsys is a hobby OS for x86-compatible PCs, started in 1997.  Version 0.9 was released this morning, and there’s a change log. The summary: This major release offers a subtly updated look, enhanced networking capabilities and associated programs, Unicode support, a software packaging/download/install/uninstall infrastructure with an online ‘store’, a user space window shell, VMware mouse integration, HTTP, XML, and HTML libraries, some C++ and POSIX threads (pthreads) support, ‘pipes’ for interprocess communication, and additional hashing algorithms. Visopsys has a long history on OSNews – the oldest mention being from 2005. It’s been in relatively steady development ever since.

HPE sets end date for hobbyist licenses for OpenVMS

Hobbyist licenses for OpenVMS have been a notable option for users of the VAX, Alpha, and Integrity business servers. HP 3000 users tried for a similar license for MPE/iX, especially in the months following HP’s news it wouldn’t continue its 3000 business. HP declined to create the kind of license the users wanted to power the basement and in-garage 3000 servers they’d brought home. With the change in ownership of OpenVMS — HP Enterprise turned over the business to VMS Software Inc. — the hobbyist program is ending at HPE. VSI is considering one option to continue hobbyist-class licenses. That’s one hell of a bummer. I hope they can come to sort of solution or agreement.

In praise of chorded input

Speaking about LSDJ, the premiere music software for the Game Boy, George Buckenham writes: But it also got me thinking about chorded input schemes. LSDJ is a workhorse of a program, able to do a lot of stuff. And it’s designed to let you do that stuff quickly – to let you iterate fast, put down a tune fast, adjust things while you’re standing on stage. But also… a Gameboy has 8 buttons – 4 directions, A, B, SELECT and START. So it has to make those buttons work hard. And that’s where chording comes in. Chording is a means of inputting commands to software by holding down multiple buttons at once. Ctrl-C is an example of a chorded command. Hold down Ctrl, then press C while you’re doing it. Text copied. But you can also make chording work harder than that. It requires a lot of planning and thinking to make a complex application controllable by only a few buttons, such as the mere 8 buttons on the original Game Boy. I wouldn’t want to be in the shoes of developers who have to make things work with limitations such as these.

An introduction to the RT-Thread IoT OS

Alan Kay said: “Simple things should be simple, complex things should be possible”. This sentence was the inspiration for the founder of RT-Thread to stick to his beliefs. RT-Thread is an open source embedded real-time operating system, and this project started in 2006. I know you have no idea what RT-Thread is, but you are using an IoT OS system now, that’s where this article may be of interest. Let’s take a quick tour of RT-Thread. RT-Thread: background RT-Thread, short for Real Time-Thread, is, as its name implies, an embedded real-time multi-threaded operating system. One of its basic properties is to support multitasking. Allowing multiple tasks to run at the same time does not mean that the processor actually performs multiple tasks at the same time. In fact, a processor core can only run one task at a time. Every task is executed quickly, and through the task scheduler (the scheduler determines the sequence according to priority), the tasks are switched rapidly, which gives the illusion that multiple tasks are running at the same time. In the RT-Thread system, the task is implemented by threads. The thread scheduler in RT-Thread is the task scheduler mentioned above. RT-Thread is mainly written in C, making it easy to understand and easy to port. It applies object-oriented programming methods to real-time system design, making the code elegant, structured, modular, and tailorable. For resource-constrained Microcontroller Unit (MCU) systems, the NANO version of RT-Thread (tailored from the standard version of RT-Thread), which requires only 3KB of flash and 1.2KB of RAM, can be tailored with easy-to-use tools. For resource-rich IoT devices, RT-Thread can use the online software package management tool, together with system configuration tools, to achieve intuitive and rapid modular cutting, seamlessly import rich software feature packs, thus achieving complex functions like Android’s graphical interface and touch sliding effects, smart voice interaction effects, and so on. RT-Thread’s architecture RT-Thread is not only a real-time kernel, but also has a rich middle-tier component, as shown in the following figure. It includes: The kernel layer: RT-Thread kernel, the core part of RT-Thread, includes the implementation of objects in the kernel system, such as multi-threading and its scheduling, semaphore, mailbox, message queue, memory management, timer, etc.; libcpu/BSP (Chip Migration Related Files/Board Support Package) is closely related to hardware and consists of peripheral drivers and CPU transport. The components and service layer: Components are based on upper-level software on top of the RT-Thread kernel, such as virtual file systems, FinSH command-line interfaces, network frameworks, device frameworks, and more. Its modular design allows for high internal cohesion within the assembly and low coupling between components. The RT-Thread software package: A general-purpose software component running on the RT-Thread IoT operating system platform for different application areas, consisting of description information, source code or library files. RT-Thread provides an open package platform with officially available or developer-supplied packages that provide developers with a choice of reusable packages that are an important part of the RT-Thread ecosystem. The package ecosystem is critical to the choice of an operating system because these packages are highly reusable and modular, making it easy for application developers to build the system they want in the shortest amount of time. RT-Thread supports more than 174 software packages. RT-Thread has launched more than a decade ago, and this is the first time we make an official self-introduction to the world, especially at the beginning of 2020, it feels great! We welcome suggestions for RT-Thread, and you can feel free to contact us on Twitter or send us an e-mail. And if you have any great ideas, you are very welcome to contribute to our Github.

RISC-V OS using Rust

System calls are a way for unprivileged, user applications to request services from the kernel. In the RISC-V architecture, we invoke the call using the ecall instruction. This will cause the CPU to halt what it’s doing, elevate privilege modes, and then jump to whatever function handler is stored in the mtvec (machine trap vector) register. Remember, this is the “funnel” where all traps are handled, including our system calls. We have to set up our convention for handling system calls. We can use a convention that already exists, so we can interface with a library, such as newlib. But, let’s make this ours! We get to say what the system call numbers are, and where they will be when we execute a system call. This is part 7 in a long series about writing a RISC-V operating system in Rust.