Qube is a multiplatform Desktop Environment with support for networking protocols such as TCP/IP, PPP, SMTP, HTTP etc. developed from scratch by Interactive Studio. The Qube environment was designed for a wide variety of console operating systems and it’s designed to be easily portable. It supports multitasking even on non-multitasking operating systems, such as DOS. The basic installation occupies less than 4MB of disk space (download the DOS package) and it looks very attractive (check for screenshots inside) with GUI elements coming from the MacOS (buttons, launch bar), BeOS (icons), Windows (desktop’s context menu style) and even Java (scrollbars). Today, we host an interview with the mastermind behind Qube, Michal Stencl.Qube was created by a single person – Michal Stencl (22), during the past year. He started to work on desktop environments in general when he was 15 years old and he released his first one, with its own executable format applications, called “Unfiroms”, two years later. The second environment was called SEAL and was released 3 years ago for MS-DOS and it’s currently distributed by default with the FreeDOS package. Michal Stencl lives n Bratislava, Slovakia and he is the Winner of the Grant Programming Competition in his country.
OSNews: So, what is Qube really? Is it an OS inside the OS, or a graphics Toolkit?
Michal Stencl: It’s something like Windows 95, not a real OS, but it’s able to be ported to all console systems and it takes less than 4MB of memory. Something like GUI with support of its own executables files.
OSNews: Do you think it will be easy to port it on Linux as well?
Michal Stencl: Sure. I think it should not take more than 2 weeks altogether.
OSNews: Will the executables for the DOS Qube will be the same under Linux, or they will need recompilation to meet the ELF format? (Windows is using PE)
Michal Stencl: No. These executables are not the same to Windows. Qube is using MX binary file format.
OSNews: So, no recompilation will be needed between applications for the Linux Qube and the Windows Qube?
Michal Stencl: Yes, Linux and WIndows Qube applications will be the same ones, but the Windows and Linux engine of Qube will need to be recompiled. However, we should not forget that Qube is not a Windows application, it’s a DOS one in its current form.
OSNews: Will you release an SDK for Qube?
Michal Stencl: Sure. We released API/SDK, but it takes some time, because we need to prepare more documentation. At the end of this week we will upload the Qube SDK – WIP (work In Progress) that will help people understand the architecture of Qube and will allow them to create applications for the Qube environment.
OSNews: What is Qube aiming for? Does it aim the embedded market, or the Desktop market?
Michal Stencl: It’s aimming at both. But because of the big tolerance for small embedded systems it’s better to first aim the embedded market.
OSNews: Are you currently using VESA on Qube? If yes, I have to say that your implementation was quite fast and it even featured transparency.
Michal Stencl: Yes, We use VESA, no accelerated cards.
OSNews: Does your GUI Toolkit support arbitary shape windows ? (non-rectangles that is)
Michal Stencl: Yes, it supports them. The best way to see the support of arbitary shape windows is look at icons. Icon is an object like anything else in Qube. Qube was designed to be able to insert views to other views and to objects as well. It’s a little different idea to put everything into everything. Imagine Windows, if you need to put the object to another one, you must select if it’s a child or main window. You can’t insert visible object to unvisible such as events or drivers.
Qube was designed to easily put one object to another, the developer should not care about object properties. There is ability to insert windows to buttons and buttons to icons. There is also a ability to insert window into the object that corresponds to an event. It finds its parent by looking for the parent of the event.
OSNews: IS Qube and its SDK accessible through C, C++ or Java? In which language it was written on?
Michal Stencl: Qube SDK will be accessible through poor C, C++ is optional, you can use C++ to make programs in Qube as well. We think about making something “like” MFC for Qube as well. Anyway, Qube has been coding in C, but there is an object oriented foundation behind it. It supports structures like objects, where each structure contains variables and functions. These functions are not real functions, they are pointers to functions. This way you can change everything you want in low-level and high-level objects as well. You can change behaviours of of all objects such as buttons or windows in RUN-TIME. You can redirect graphics/disc output to modem output for example. This is only one example of what Qube can do. There is also the ability to change anything in the run-time. If you would like to make own object that’s derived from button and would like to use it for all buttons in the environment, you should only change the initial function that creates the buttons and prepointed this function to yours. Whenever some applications will create the button, your button will be drawn.
Lets see how this works :
Imagine a view that has predefined behaviours by Qube. This is the same like in the OOP idea. But, what’s different is that you can change these predefined behaviours by objects that are loaded after the definition of these behaviours. You can change that, because functions inside these objects that defines these behaviours are pointers to functions. So, it gives you an advantage to prepointed them to other functions (still with me?).
I had a discussion recently to support Java for Qube soon, but we are sure C,C++ will still be dominand.
OSNews: Are you planning to add a full networking stack that will support networking cards? How about a browser?
Michal Stencl: Yes, mainly under Linux systems though. Qube was released for a wide variaty of operating console systems, but there is possibility to support more systems that are a lot different among them. Qube architecture is the following :
(system depended functions of OS) -> LOW-LEVEL API -> HIGH-LEVEL API -> LIBRARIES AND MODULES -> APPLICATIONS
The Qube engine supports everything for creating a desktop environment with network protocols and multitasking. The original idea was to skip problems with development of GUI engine for alternative console OSes. Anyway, you have a choise to only support the OS you want and Qube will make sure you have all you need for that particular system. There are differences between other OSes which can break compatiblity, but Qube will be able to load, at run-time, certain modules which can extend your current system. If you will not add these features, your system will run as default.
Under Linux, we can support LAN cards and redirect functions that handle communation to be able to connect through LAN. When you start at DOS mode, these features will be disabled and the system will still run correctly, but without LAN support.
A browser for Qube is not available yet. We are still working on and welcome all ideas to port other browsers for our environment.
OSNews: What kind of filesystem Qube uses? Can Qube “see” and execute files from the host Operating system?
Michal Stencl: Qube was designed to have the same style of filesystem under all OSes, without trying to change the filesystem of the host OS. It doesn’t make any virtual FAT tables on disc or something. In the root directory of Qube some *.DEF files can be found. These files are used for information about paths to important directories for Qube. These directories are placed in Qube ROOT directory such as TRASH (trashbin), DOCS (documents), DESKTOP (for desktop files), DEV (for devices, cd, hd, floppy, etc..).
Imagine that “host.def” file in ROOT directory of Qube contains string “C:\Qube\DEV”
and “_hd0” file is placed in “C:\Qube\DEV” directory contains string like “C:\”
When you call an open function through Qube API that have to open file “hello.txt” on your C drive, you need to select path as :
“localhost://_hd0/hello.txt” – this string will be parsed by the API to “C:\hello.txt”.
If you change “_hd0” file in C:\Qube\DEV directory to “a:\” you will open “hello.txt” file on your floppy.
We use some technology found in existing protocols as you can see. Each prefix such as “localhost” or “desktop”, “memory” define protocol and are supported by functions that returns the correct place of files on the filesystem you are working on. These protocols are defined by pointers to functions that can open, close, find, write, etc… files on devices you need. You can support your own protocols and register them through the API. All high-level functions will now be able to communicate with the same behaviour as before.
This is how Qube can see all files on your filesystem and will be able to open and write these files as well, without changing anything in the host OS.
There is a (future) possibility to run specific executables on each platform by redirecting of few system functions in low-level API.
OSNews: In your papers you say that Qube brings multitasking, even if the host OS does not support multitasking (as in the DOS situation). Please talk to us about the back end of Qube, technically-wise.
Michal Stencl: Qube brings multitasking using the same trick that Windows 95 uses. It’s not the same under NT or Linux though. It was important to support Qube on non-multitasking operating systems as well (like we do in the DOS case). All of our applications, objects and views receive events from the Qube engine. You can work with many applications at once and can you select periods in miliseconds of receiving these events for your objects, but applications are not based on own stack size.
OSNews: What are your future plans for Qube?
Michal Stencl: We would like to port Qube to embedded Linux in the near future and enter the embdedded system market too. Qube can be very useful for companies and people who need to use and add a nice graphic environment with Internet support into their own systems.
… could you please stop posting interesting news when I just wanted to go to bed? I need some sleep so badly…
Hmm, only runs on DOS? Where the hell did I put my DOS disks? Oh dear.
Maybe I can delete the GUI from Win2k and install Qube instead?
> I need some sleep so badly…
nani-nani-lalala… /me is singing a greek song for Spark, a song used to put babies into sleep.
>Hmm, only runs on DOS?
It runs on my Win98 as well just fine. Just double click the executable. I don’t know about WinNT/2k compatibility though. The Linux version should be out soon. This first version is indented for DOS though, but if you run on WinME or you don’t have DOS, you can always try the FreeDOS package as linked from the article, which also supports Qube.
Great, the more I read, the more does it interest me.
The best of all was when I read “GNU LIBRARY GENERAL PUBLIC LICENSE” (although it is LESSER now, but who cares).
I think that this text is there for a reason, right? Don’t tell me you just wanted to fool your readers and Qube is proprietory instead.
Thank you for singing.
There is something that makes me sad… everytime there is a new interesting OS or even an interesting desktop (like Qt/Embedded or this Qube), it’s for embedded devices.
Why is desktop always secondary target?
It makes me sad because the desktop is where the “life” of computing is. Embedded devices are, where the money is though…
Really really sad.
Fortunatly, freetime operating systems like AtheOS can still concentrate on the desktop.
>I think that this text (LGPL) is there for a reason, right?
I don’t know. Only the first screenshot is mine, the second was sent to me from Michal. I don’t think that Qube is open source though.
But it would be very weird to show an open source license, if the system isn’t open sourced.
And I found this on their page:
“This application is released as the Open Source for everyone who uses console operating systems without desktop environment.”
From reading the info provided there it looks as if they would want to make money with customizations for companys and similar.
That would be a nice idea IMO.
They also have another product (GamePort) and I’m sure others will follow. So it might be a good idea to use Qube mainly for advertising purposes. I suspect that this kind of OS (free (as in speech and in beer), nice GUI, simple to use and installable on top of every other OS) could become very popular, if the quality isn’t too poor. And there is no better advertising, than a successfull free software product. Look at Qt, I’m sure they wouldn’t be as successfull as they are without free Qt used by the free KDE.
Popularity is the key to success and a popular free product is the key to popularity.
The version of Qube I downloaded for DOS includes a license that you can also view through the Qube UI. And the name of that license is “Qube Binary License”, I did not find anything for LGPL in the package.
This is another one of those products which I can’t make heads or tails of.
Maybe I just don’t get around enough,.. dunno.
It looks like an OS from the one screenshot I saw, but then there’s something
about it running on DOS? A DOS program? Then something else about it being for
embedded systems? And then something else about a console operating system but
it’s got a GUI — not a console window.(?) Or wait, maybe they mean it has
something to do with game consoles like the playstation?
I’m a smart guy, but I don’t get all the tech-speak. I wish companies would
just say in plain english what their products are. I still haven’t figured
out the the Amiga DE is…
Ok, in plain english:
Qube is a program (a semi-OS to be more specific) that runs on top of command line OSes. For example, Windows 3.1 and Win95 were what Qube is: A graphical environment on top of the existing OS (DOS). Now, because this environment is pretty portable (remember, it looks and behaves like an OS of its own, but in reality it works with the help of the host OS) it can run on top of Linux or FreeBSD, on QNX or other OSes that are text-based. So, while Qube can run under all these OSes, the company prefers to make business in the embedded market because there are no many such offerings there (there is mostly QT/Embedded in this market area and QNX Photon). For the desktop, Qube is, technically, something between X and QT in the way it operates and interacts with the host OS. Capito?
Qube was released under OpenSource terms. It’s based on the same OpenSource license as Java(tm) from Sun-Microsystems. It’s free for all, but companies must pay for porting to their OSes, if they are interesting in. We are working on projects with embedded systems companies. Sources for Qube will be released but not their native engine codes. API sources will be released to everybody. It’s a protection of the company to protect from people who would like to make clones. Much people like to change “image background” and talks about the new system at the world. I was released SEAL as the desktop environment for FreeDOS under GPL 2 years ago. This system has in this time many clones such as BadSeal, StarSeal, SEAL 2.0, etc…and many peoples want to use SEAL for their own desktop enviroments. They change desktop background and icons and talks about the new system “based” on SEAL. But it’s not based on, it’s the same one.
This is the reason, why we released Qube as the OpenSource, but there is no way to recode the low-level engine of Qube and to talk about another system. All peoples who would like to support this environment need to make applications and don’t think about to change desktop background and call it by other name.
Anyway, it’s OpenSource simple to Java(tm) license terms.
Great site. Check out this OS. It looks promising and will eventually be standalone. Perhaps you could do an interview with somebody from Rocklyte.
Yes, I know the RockLyte guys (especially Paul Manias). I used to be a beta tester for Athene some months ago.
Michal, thanks for the explanation!
I think I can live with that, although free software is very important for me. But I can get your reasoning.
What I think would be nice though, that would be a special license agreement, that Qube (or anything else that uses this license) WILL become free software (as in LGPL or BSD), if the company (Interactive Studio) might ever go out of business or is sold to someone else (unless this someone signs the same contract). What do you think? Trolltech already did it when Qt wasn’t GPL, so people don’t have to be scared of the future of their work if the base (Qt, or Qube in your case) might ever be sold to anyone else.
And the current situation with BeOS shows, that this might really be important.
For something else, I just tried to install FreeDOS but it seemed to be impossible. All I got is a deleted Fat partition that wasn’t deleted before. Whatever… almost everything didn’t work with fdisk.exe, format.exe and sys.exe. I just forgot how crappy DOS is, so I guess I will wait for Qube to run on Linux or Win2k.
You can run FreeDOS under the Bochs emulator under Win2k or even BeOS…
Bochs emulator was ported to Qube 5 months ago. We didn’t attached it to demo version, but I think about to make this. It’s a funny : Qube can be run under certain OS and can this OS through Bochs emulation as well . Sure, it’s not only FreeDOS, that can be run trough Bochs for Qube, but we haven’t an image of Linux kernel in .img file. I seem to make this for the future of the Qube. What do you think about ?
Here is the link to BadSeal 0.54