Skip to content
Paolo Fabio Zaino edited this page Mar 21, 2022 · 9 revisions

RISC OS new DME (Desktop Management Engine)

Welcome to the DME wiki. This wiki and repository is part of the RISC OS Desktop Modernisation project, which is a Suite of tools and components and a community based effort to try to "modernise" the RISC OS Desktop experience by adding features that are considered standard on modern desktop operating systems.

Introduction

RISC OS is an Operating System developed by Acorn Computers back in the 80s and that has survived many years, but it's Desktop has not had many improvements since back in the beginning of the 90s and this is particularly true for the most modern incarnation of RISC OS called RISC OS 5, which is developed and maintained by ROOL (RISC OS Open at https://riscosopen.org).

A number of RISC OS user have many times requested certain improvements, and later on, with the introduction of the Raspberry Pi many more users have requested more modernisations around various aspect of the operating system, of which one is the Desktop Experience.

The DME Suite project is an community driven attempt to build at least some of these improvements and try to modernise RISC OS Desktop as much as we can, given the small amount of free time each member of this small community has.

Given that the RISC OS community in general seems to be divided between a small number of users that wish to keep RISC OS desktop as the original one from Acorn and a growing number of users that wish to experience a more modern Desktop, the nature of the DME is completely optional and can be added on a per user basis just by using PackMan and installing the entire Suite, or even just part of it. So, in other words, if one doesn't need it then they can completely ignore it! ;)

General Architecture

RISC OS DME is, as mentioned, a "suite of components" which means a set of pieces that can be installed on a RISC OS system and that will provide certain features in order to achieve the goals described above.

Given that the suite of components will be composed by many components in the end, to make the installation, maintenance (and also uninstallation if one would want that) easy, the entire suite will be based on the new RISC OS Packaging management format RiscPkg and will be installable (and removable) via the !PackMan tool.

DME-Core

The DME-Core is the engine that manages all the RISC OS DME Suite components.

That means, DME Core controls:

  • Which components are being executed at Boot time
  • Which components can be executed on demand
  • How to request a component execution
  • etc.

If you are familiar with Linux, DME-Core works in a similar way to how systemd works, but it's not as complex as systemd and is designed to be easy to be controlled by an average user.

Components Categories

There are multiple categories of DME Suite components (also sometimes referred to as add-ons):

  • Global Components, these are the "macro components" that provide vital features like:
    • Global keyboard short-cuts
    • Application launching facilities
    • Notifications services
    • Time and events based tasks automation
    • and more
  • Wimp Plugins, these provides minor features to the RISC OS WIMP, which are features not provided by the WIMP itself such as:
    • Windows To Front facility to bring a window to front from any place in such a window
    • Multi-Desktop environment
    • New extended Filer
    • and more
  • Toolbox Gadgets, these are additions to the RISC OS Desktop Toolbox that extend the Toolbox functionalities
  • Desktop Apps
    • A suite of added apps on top of the traditional and existing ones

Another important aspect of the DME Suite is that it's being designed to allow as much control from the user as possible, but without compromising performance or creating bloated components.

We are trying to avoid to have to reinvent the wheel, unless it is necessary

We are trying to reuse as much of existing components as possible, but, in order for an existing component to be suitable for the DME Suite, such components have to present the following requirements:

  • Open Source (no exceptions, we need to be able to maintain such components even if the original author disappears for whatever reason)
  • Stored on GitHub (so we can create build automation that is not insane and that doesn't have to deal with millions of different websites that may disappear overnight)
  • Stored on the RISC OS Community GitHub (in case the original user wants to change direction or close a repository, we must be able to continue to support the user base)
  • Written in a fully supported programming language (read Supported Programming Languages for more details)
  • Documented (possibly in English language)
  • Have Tests to validate the code functionalities as much as possible
  • be buildable from every system (so if they only build on your own computer, but not on everyone else, that makes your code NOT suitable, sorry)
  • Support as many releases of RISC OS as possible (and document which ones are NOT supported)

Components list so far

What follow is a list of components for which the adaptation or the design and implementation is undergoing (or is completed):

Supported Programming Languages

Here is a list of supported (and recommended) programming languages to use to build and maintain all the DME Suite components:

  • C (specifically ANSI C99)
  • BBC BASIC V (from release 1.05)
  • Lua (from release 5.43), given that Lua doesn't work on all old RISC OS releases, we recommend to use Lua only for building automation, not for core components

We do not recommend to use Assembly (and we do not support it), this because one of the aim of the DME Suite is to be portable and easy to maintain. While assembly is not recommended (and, again, not supported), it's allowed to use small routines where it's strictly necessary and always in the context of a more maintainable language as C or BBC BASIC.