Some news :)

It is really hard to learn a new (human) language  first half of a day, then work like a full time developer the other half, and find some time to nurse own project… But, finally, I’ve found some time to work on my Airely.

I’ve “ported” it to a new version of rust-sdl2 (0.29) – it has matured and some things were really changed. And I’ve managed to build it on the new Rust (1.15.1) with some change.

This project will continue further anyway :)

4 months without coding…

I know, that I seemed to be lost. There was a lot to process lately.
First of all, I’m planning to immigrate from that totalitarian state called Russia. I’ve found a way to Europe and soon I will go there. I hope once and for good.
Second, there was a lot of work on my main job, where I develop successful project for Android (users).
I hope that I will find some time to work on my dream-project (that is Airely) in coming weeks…

Edit: Of course, I’ve forgot to mention that I’ve worked in a gym, lost about 5 kg, improved some health.

P.S.: There will be a hard time from September. I will need to go to a language courses and work remotely, there will be a very little spare time for me for about 9 months. It will be very hard, but I must do it for my future children.

Events and Listeners

What am I working on right now? The Listeners subsystem, which helps programs to be aware of some changes in the environment on a device. Network connection and disconnection, or new windows appearance and change of focus among them (useful for the desktop program).
The base of the system is done. After implementing of listeners I will be able to implement “desktop” app, that will implement taskbar with all the task buttons and “Start” button.

The blog and the work

I’m excited. Excited by my progress on Airely and by the Rust programming language that gave me this long awaited opportunity to make my Airely to become a reality.
All my spare time I’m thinking about some features or implementation of them. And there is so much of I could write about but I choose not to because I use that time to work on Airely.
Just have in mind – if I am not writing new posts to this blog doesn’t mean that Airely is dead. It can’t be true, as I have all that I need to continue working on it.

The New Year Progress

You may think that I’ve stopped developing Airely. No, that can’t be true. I’ve had a spare time that I’ve totally invested in this wonderful project of mine, but there was a complication – I was ill for about 11 days and I’m not that healthy now. It’s not that scary – just some hard virus.

But what about progress?

$ cargo count -v -l rs
Gathering information...
Excluding: ["D:\\PROJECTS\\Rust\\Airely\\.git"]
Only including files with extension: rs
Displaying the results:
         Language  Files  Lines  Blanks  Comments  Code
         --------  -----  -----  ------  --------  ----
         Rust      37     10354  1204    555       8595
         --------  -----  -----  ------  --------  ----
Totals:            37     10354  1204    555       8595

As you can see, total line-count of Rust code is 8,5k. But what is about the new features? The short list is like this:

  1. Many optimizations and enabling of VSYNC for the video. Now the system is far less intensive on CPU and GPU.
  2. Windows Management improvements:
    • Moving by the title
    • Resizing from every corner and side
    • Focus switching and z-ordering
  3. Windows decoration subsystem was evolved – all windows decoration is moved to Lua level. Every human should be able to code his own theme for window decoration from now on!
  4. The window title buttons subsystem is implemented. For now the Close button is fully functional, but Minimize and Maximize buttons are to be implemented next.

Embrace yourselves!

This week in Airely 2

Okay, this week I had very little spare time in weekdays, but on Saturday I’ve worked hard on Airely.

The changelog is rather good:

  • Made a system of window-decoration. Now the windows can change its decoration type: with title, without title, and without decoration at all.

window_decoration

  • Added a window-flag for “stay-on-top” functionality. Now some windows can be allways on top.
  • Added an ability to move and resize windows. Yay!
  • Added handling of MouseMove, MouseDown, MouseUp, KeyDown and KeyUp events, and implemented pushing them to appropriate window.
  • Fixed an issue with lua-stack leaking.

The next steps will be font-system and image loading system.

This week in Airely 1

Okay, as they say now – this week in Airely. I’ve given much thought about Window Management, and especially self-painting of windows in their code.

The System has one Renderer (in terms of SDL), and in each moment of time it has one target – the screen itself or one of the textures of some Window.

Each program (application) in Airely has its own main thread, in which the painting of Windows is done. Therefore, the target of the Renderer is switching back and forth among all windows and the screen. The task of synchronization was not so easy, but the result is very rewarding.

The focusing and ordering of Windws was somehow tricky also, but it is also done and working perfectly. Finally, I can focus windows with mouse and drag them anywhere. This was a long journey of architecturing all mechanisms and learning Rust by the way. In some moment I’ve become fond of Rust’s principles and I am not arguing with it now as much as it was when I started.

The message system, or you may say “event system”, has been advanced further this weekend. I’ve made a translation of SDL’s Events to my own Msg’s, and some of them (mouse move, mouse down and mouse up) are successfully translated from SDL layer to Lua layer, where they are gladly consumed.

You can look at my second video, which will show the “Window Management magic” with focusing and window dragging. Be patient, the magic starts at 0:18 ;)

Positioning and purpose

What the Airely will look like? And what could we do in (with) it?

The main purpose of Airely will be a full desktop OS with graphical user interface. Yes, like Microsoft Windows. After some particular step in development I will slowly but intentionaly move all my tasks to Airely.

Could it serve as some sort of server OS? Ofcource!
The Rust language is intensively developed and I am planning to incorporate all the great features of it and cool libraries like Hyper.
It will be possible to develop web applications right from the box.

But, the main purpose is a desktop.

Technologies

First of all, I’m not starting from bootloader and switching to other modes like Protected or Long. I’m not writing code for memory pages and swap. If I start from that level my Airely will loose years.

I’m building Airely on top of existing technologies. For now it is working like a single process in some other OS. Thanks to Rust, it can be compiled for Windows, MacOS and Linux.

The other technologies that I’m using for now are: SDL2 and Lua.
The later will become main language for developing software for Airely.

In the end I will conclude that my OS will be “high level” OS like Android that is running on top of Linux. If you remember, there is Boot To Gecko, that is working even as a launcher for Android, and we name it a Firefox OS.

Introduction

Hi. My name is Roman (aka Revertron), and I’m developing an OS in Rust. But don’t laugh right now, let me explain.
I’m not that naive like more or less all of starting software developers in high schools. For starters, I’m approaching 36 and have about 12 years of experience in software development. I’ve worked on UI solutions, client-server code and so many other things that I can’t possibly name them all.

So why an operating system you ask?

I’ll tell you why. Most of the successful OSes we know were developed from a reasonable necessity. I believe that current OSes are going away from what a true OS should be.

Then what is an OS done right?

  • First off it has to be easy to use for as many people as possible. As easy to use as a pencil or a pen. As we move to a world populated by devices we can hardly imagine our lives without a PC at home anymore. But there are many people that aren’t familiar with all those modern interfaces and concepts.
  • Second, it must be secure. For those unfamiliar with computer science the Operating System should unobtrusively make them aware of security concepts, rights and permissions in every aspect of handling various types of information, which may involve actual work or entertainment.
  • Third it must serve as a modern platform for software development. It should be easy and entertaining to start. It has to allow automation and customization without compromising security, of course.
  • Fourth, the security model of the OS must protect not only the system itself, but with highest priority all of the user’s data. You sure have heard of ransomware that encrypts user files and extorts money to decrypt them.

To sum it up: a necessity has emerged, and we need an OS that meets its challenges. We can do it without backward compatibility and silly attempts to patch 30 year old code of current OSes.