In this post we’ll have a look at the status of another RISC OS project I started last year. Given that it’s starting to take shape and quite a bit of it started to work I think it’s time to present it 🙂
Important note before you read the rest of this page!
I am happy to see the RISC OS community has accepted in large numbers this project! Thanks for having expressed your interest about the project and I’m glad so many people think it’s very useful. The whole DME will be available as a set of RiscPkg packages that are installable via PackMan on every machine that supports it. Given that the project in this page is being designed to also run on all original Acorn Archimedes, Acorn “A” and RiscPC series, for machines that do not support PackMan there will be a special installable single package that contains everything.
Please note: ALL the work in this project will be distributed under CDDL v1.1 license. The final decision comes from the fact that I want the whole project to be OpenSource and also commercial applications friendly, and, at the same time, I want to ensure that everyone who’ll improve the code make their improvements available to the entire community to benefit everyone 🙂
This page should be considered an introduction to the project and not exhaustive of all the features offered by the Project it describes.
The Desktop Modernisation is an ongoing effort and so things may change over time.
By reading a lot of posts on the ROOL forum, following multiple people on social media and new initiatives being started as Kickstarters I have noticed there is a big portion of RISC OS users that really would like to have a more “modern” desktop experience on our beloved OS. I took inspiration for this project after a ROUGOL presentation from WiFi Sheep‘s Tom Williamson to start working on some of what is needed to make the RISC OS Desktop look and feel a bit more “modern”.
I do not yet have a name for this project, so I asked on the ROOL Forum for the community help on suggesting a name for it. If you are interested then here is the link to the thread there please feel free to express your ideas on a possible name or vote for one of the proposed ones, thanks! 🙂 (if you do not have an account on ROOL then you can leave a comment in the comments section below or send me a message with the contact-me form).
Please note: this effort is purely to address the desktop experience itself, not to improve the OS security or architecture to work as a more modern OS.
I am also looking for help on this project, please see the bottom for more details.
RISC OS Desktop experience modernisation
A possible take on the modernisation process is that it has to act on the following points:
- Allow more modern themes to be applicable to RISC OS WIMP
- Extend the Theming protocol as much as possible (including sounds, animations and what’s possible)
- Support for palette per Theme
- Support for fonts and Font size per Theme
- Support for sounds per Theme
- Support for gadgets per Theme (optional)
- Support for backgrounds per Theme (optional)
- Add a more modern WIMP Theme to RISC OS (this will be included in the list of available Themes)
- Make it easy to add new Themes from 3rd parties
- Introducing Dark Mode
- Convert ALL existing Themes for ALL versions of RISC OS to the new Desktop Modernisation Engine
- Integrate the Theme creation/editing with some existing Theming application like Skinny (from Real Small Software Company) so that non-technical users can easily create their own themes using tools like !Paint, !Fonts and some others for Palette editing and sound editing (no coding should be required to create a new theme!)
- Extend the Theming protocol as much as possible (including sounds, animations and what’s possible)
- Allow the addition of new “global desktop controls”
- Add control to allow a user to bring any window to front just with a click
- Integrate with ARMClub’s !Workspace to allow multi-desktop on RISC OS in an easy way that also looks and feels as it’s experienced on other modern desktops like KDE etc.
- Introduce more modern controls for menus
- Improve the Filer to have more modern features
- Customisable views per directory (aka support for having some windows with details and others with large icons depending on the user needs and without forcing the same setting for all Filer windows)
- Add a Utility bar to the Filer Window for quick access to most used functions
- Add more features right now in TBD
- No need to improve the Pin-board as this is already being worked out
- Introduce a framework to handle keyboard shortcuts
- Allow mouse control via arrow keys for the situations where the regular mouse stops working or for RISC OS deployments that may require no mouse.
- Introduce a new Notification Framework to make it easy for applications to generate notifications and have them delivered to the user without the use of modal windows
- Allow easy installation and activation of 3rd parties global desktop controls
- Add more desktop gadgets to improve the desktop experience
- Introduce a protocol for windowless and borderless gadgets on the desktop (pin-board)
- Integrate with other useful and already existing Desktop tools (I do not want to re-invent the wheel where possible)
- Allow easy installation and activation of 3rd party Desktop Gadgets
- Allow a user to customise his/her experience on the new RISC OS Desktop
- Make sure that all the new features can be turned off so the purists of the original RISC OS desktop can maintain their favorite approach
- Allow the user to create a configuration file of his/her choice to make it easy to replicate it on multiple RISC OS computers (this will also help companies like RISCOSBits, Elesar, RComp, Cloverleaf, CJE and other RISC OS hardware vendors to distribute their computers with their own branded RISC OS for example)
- Make the Desktop Modernisation Engine capable of supporting as many RISC OS Releases as possible
- Ideally I would like to support from RISC OS 3.x to 5.x and possibly also the non standard Adjust ( I tend to not call ROS 6.x with the official release number because technically it’s just a “4.x +++”, and that 6 just makes things confusing )
- At the moment it supports and recognise RISC OS 4.x, 5.x and Adjust
Some early screenshots
Here there are some early screenshot of the initial modernised themes working:
Another Theme even cleaner:
Videos with DME “Progress Updates”
You can watch videos for each component’s progress updates here:
Please keep an eye on this spot, as soon as I have some time I keep adding videos and images so you can follow all the progresses! 🙂
Design and Development phases
This effort is going to be going for a while given a lot of potential issues along the way, so I have decided to split the whole project into two different big phases (phases named after Dr. Who episode titles!):
- Phase 1:
- In this phase the intention is to design and develop what is possible, using what is available
- In this phase the goal is to make the RISC OS DME (Desktop Modernisation Engine) support as many RISC OS releases as possible. This is in order to allow the entire RISC OS community to access the project and benefit from it as soon as possible and allow more people to help.
- Milestone 1: “The Firemaker” – Dr. Who Series 1, 14 December 1963)
- Committed Goals
- New Theming Protocol
- DM Engine core and configuration tool
- Initial set of Themes including:
- 2 modern themes ( preview above )
- RISC OS 3 Theme (yes for the nostalgia guys, they will be able to run RISC OS 4, 5 etc… but looking like RISC OS 3.11!)
- RISC OS 4 Theme (so if you loved RISC OS 4 and want RISC OS 5 to look like it now you’ll be able to do this!)
- RISC OS 5 Theme (a reproduction of the standard RISC OS 5 theme that now can be used everywhere)
- Converted new RISC OS 5 themes ( Morris etc.)
- Global Control for Windows to Front
- Initial implementation of Better Filler
- Window Menu
- Integration with ARM Club !Workspace (big thanks to Druck for allowing this!)
- Stretch Goals
- Dark Mode
- Palette Editor
- Include also RSSC Themes converted to the DM Engine
- Include original Rich Goodwin beautiful Themes converted to the DM Engine ( I have received written notice from Rich Goodwin that allows me to import all his original work into the new DM Engine, so big big thanks to Rich for his support! )
- Committed Goals
- Milestone 2: TBD
- Phase 2:
- In this phase, after gained knowledge of what is missing at the WIMP level and really needs to be added to the WIMP itself, the goal should be to lay out a set of changes for the WIMP as a proposal for ROOL and eventually try to work them out.
- Such changes won’t be available to RISC OS versions different than the ROOL ones.
- Milestone 1: “Dangerous Journey” – Dr. Who Series 2, 7th November 1964)
- Add configurable Windows border to improve customisability of the WIMP
- Add support for translucency (transparent windows)
- others TBD
The entire process will be incremental, so the early releases will be available already from phase 1 as soon as the core components start to work in a stable enough way. Then through a process of multiple releases there will be more functionalities added and to be tested by the community.
The Architecture for the ROS DME (RISC OS Desktop Modernisation Engine) is very simple. It sits on top of the existing WIMP and (depending on the RISC OS version) it will either extend or introduce the specific features.
Each component is either built as a TaskModule or as a stand-alone application, making it extremely easy to be loaded/unloaded as the end-user desire. So nothing from another planet.
Each component can use the historical RISC OS vectors API or regular WIMP SWIs. The programming languages used are:
- ANSI C99 (code can be built using either Norcroft C / ROOL DDE or GCC for RISC OS)
- Some (very little) ARM Assembly
- BBC BASIC. On the BBC BASIC side, I am trying to do my best to use it on some of the components, so that many RISC OS users will be able to hack them and improve them.
DME will have a RISC OS !Boot configuration tool to make it extremely easy for the end-user to choose their favorite Theme and enable/disable every functionality.
Put in few words: “RISC OS DME is a collection of tools and components that sits on top of the WIMP to modernise the RISC OS Desktop experience.“
For the Architecture details please have a look at the RISC OS Community on GitHub organisation, where code, discussions and tech documents for this project live.
Why a layer on top of the existing WIMP and not rewrite the entire thing?
- I do not have much time available for this
- Many do not want to wait for a full WIMP re-write in C
- Even when WIMP will be rewritten in C and extended we’ll still need a comprehensive solution to configure all the options
- I think there are already plenty of pieces developed here and there, so we just need to collect them, clean them up, make sure they run fast and smooth and combine them in a single solution easy to configure and install
Why are you doing this?
Mostly for fun and to refresh my knowledge of RISC OS WIMP programming, no strings attached and it’s something that may benefit quite a lot of users in the community.
The DME will be released under CDDL v1.1 license, so it’ll be open source and the hope is that it’ll have a full pre-installed RISC OS distribution (but not sure I have the time for this at the moment). CDDL is compatible with RISC OS 5 licensing and previous RISC OS releases and the CDDL elease 1.1 has specific improvements and compatibility with the EU laws. CDDL also protects the right of the contributors, not only of the original author. If you’re not familiar with software licensing here there is an article that helps understanding the CDDL license.
Scheduling and availability
The speed at which this is being worked out can be summed in the following statement: Modernising RISC OS Desktop experience one weekend at the time! Yup that’s all I have for this which is also why I need your help to make this happen! (Read below how to help).
Source code available in the new RISC OS Community space on github.com, link here.
Please note: You have time to subscribe as an Alpha or Beta tester. First Alpha (if everything goes well) should not be available for download before the end of August 2021
In the following picture I summarised some of the effort (just to give an idea of the “dynamics” of how I work on it), its state to date and an hypothetical scheduling for availability of the first Alpha release if I’ll manage to keep the progress steady and have no other priorities. Please understand that the time I have to work on this is extremely limited and potentially only being done during weekends when I am not working on other projects of mine. The reason I show the following picture it’s just to give an idea of the effort if a single developer were to work on this. So your help would be very much appreciated 🙂
Phase 1 initial scheduling (more phase 1 features will be added on a 2nd and 3rd milestone):
How the scheduling above works is simple: I defined as “working week” only the weekends and from 16:00 to 20:00 which is a pretty much realistic scenario. On top of that I added an “efficiency” of 60% (this to include weekends that I may not be able to work on this and all the usual life/family interruptions). Finally displayed it in year-quarters to avoid committing on specific dates given that such a thing would be hard to keep. Hopefully this approach will allow many out there to be able to join knowing that the scheduling is being planned for who has very little time available.
How to contribute to the project
There are multiple ways to contribute:
- Helping with the coding
- Helping with porting old Themes to the DME
- Helping reviewing documents and templates for spelling errors (corrected by Steve Pampling, he is officially in the team now!)
- Helping reviewing code
- Helping testing on multiple RISC OS distributions and releases
- Supporting the project with your comments and feedback!
Initially the project will be hosted on github.com, but the hope is that in the future it may be hosted on the ROOL gitlab. The reason why I will start with a repo on github.com is because I have noticed that many potentially interested people already have accounts there, so that will probably make it easier for many to join and support the project. If you think ROOL gitlab would be a better place from the beginning please let me know in the comments below or on the ROOL forum, thanks!
EVERYONE is very welcome to join 🙂
What do I need to know in order to be able to help?
Not much, I recommend:
- The RISC OS Programmer reference (these type of projects are heavily based on using RISC OS SWIs and OS Vectors, so a good reference it’s a must have)
- Knowledge of C and/or BBC BASIC. As I said I am doing my best to use BBC BASIC where possible so more old RISC OS users can help, but obviously certain parts are better coded in C.
- DDE development environment (or GCC) is required only by those who would like to help on the C side. For the BBC BASIC side there is an offer to get ABC BASIC Compiler for free from ROOL and RISC OS France, so for parts that may require you to compile BASIC you should be ok without any investment.
- Knowledge of how to code on RISC OS for the WIMP, now this is not strictly required and if you do not possess it this is a great opportunity to either refresh your WIMP knowledge or build one!
- If using GCC make sure you keep the pure C code in ANSI C99 standard and all the OS calls abstracted to make sure the source can be recompiled in both DDE and GCC.
How to join this project
- For alpha and beta testers:
- Send me a message via the “Contact Me” form explaining you want to be tester. That means I’ll message all the testers from time to time to collect feedback
- If you would like to help with coding, code review and documentation
- Make sure you have an account on github.com (if you do not know how to use git please review git use on one of the billion available resources)
- Send me a message via the “Contact Me” form explaining you want to help with coding, code reviews, documentation etc. and your github.com account so I can add you to the github.com project repo
I am planning to create a chat room on IRC (using libera.chat), so probably an account on IRC would help!