Page 1 of 1

Valix - Experiment in Design

Posted: Mon May 23, 2011 1:15 am
by xvedejas
Image

This will be the official thread for my OS project, Valix. I am pleased to announce that, due to recent progress, I plan to release a pre-alpha version by July 1st. The first part of this post will be written in an FAQ format, and anything after that edited to add more information as things progress.

What is the goal of Valix?

The goals of Valix are, by my observation, quite different from the goals of most other hobby OS projects. A quick look through some other projects, you see things like "POSIX compatibility", "super stable and super fast", "cross platform", or specific uses like "webserver". The philosophy behind Valix, though, can really be summed up by one phrase: Experimentation in Design. So far that means we've made some very counter-intuitive but interesting design choices.

What's the biggest difference between Valix and your usual OS?

Right now, the biggest obvious difference is the way applications will be ran. There is a compiler and interpreter, written in C inside of the Valix kernel. The compiler makes bytecode that the interpreter then interprets. The language is a dynamic, object-oriented language similar to python, ruby, or smalltalk, but of my own invention. It doubles as both the system language and the system shell. It's the language that applications should be written in, as well as configuration files, and it's the language that a user might use in a system command line. The kernel doesn't need to handle any binaries at all, and in fact things like task state segments or protection rings can be ignored completely.

Other differences?

Smaller differences aren't so obvious to an end-user or application programmer. Valix doesn't use any paging or other memory protection schemes, as the kernel is the only binary running directly on the CPU. The system call interface is also simplified, since the interpreter is itself part of the kernel. Currently we are debating whether device drivers should all be written in C (for speed) or in the interpreted language (for debugging, design, and simplicity).

This is barely the beginning though. Some other design experiments are planned or in planning, including a completely tag-based file system. We hope to be creative with the graphical user interfaces as well. There are a lot of interesting, perhaps untested ideas out there that need implementing.

What stage is Valix at?


Currently, Valix has a multi-threading system, memory manager, and working compiler/interpreter. The compiler and interpreter are not complete, but they do work, and most of the hard work is done. Currently basic statements such as "a = 2. b = 3. Console print: a * b." work as expected. Due to the setup with GRUB2, Valix boots directly into 800x600 VESA mode, and stays there. There are some video routines but they're nothing interesting, and currently in disuse. All output is currently read from the serial port, so testing is done either on Virtualbox or Qemu.

What do I care?/How can I help?

Okay, so maybe this project isn't exciting enough for you do contribute to. On the off-chance it is, feel free to contact me on xmpp at [email protected] or send me email to the same address. Otherwise, you can do any of several simple things right now. You could suggest a new idea to implement. You can come back in July when we plan to distribute a pre-alpha CD image for testing. You can check out the code, which is temporarily at http://gitorious.org/valixos/. Or you can just discuss Valix here. Thanks for reading my post :)

Re: Valix - Experiment in Design

Posted: Tue May 24, 2011 10:33 pm
by tekk
I really have two basic questions:


1) Can you post an example of the language? python/ruby/smalltalk is a pretty broad spectrum of syntaxes..
2) will it be gui only or will you have the option of using terminal only if something goes wrong or you think it'd be more efficient?

Re: Valix - Experiment in Design

Posted: Wed May 25, 2011 11:15 am
by DavidCooper
Don't be disappointed by the general lack of replies - this looks like a very interesting project and I look forward to seeing where it goes.

Re: Valix - Experiment in Design

Posted: Fri May 27, 2011 4:57 am
by Chandra
The "VALIX" logo is cool. I didn't get to see the original project though; so, no comments.
But truely, something interesting info about your project would've carried out a lots of interest. Much of the obvious differences you mentioned doesn't look that convincing. But again, I've not seen your project, so that might be only my point of view.
Cheers.

Re: Valix - Experiment in Design

Posted: Fri May 27, 2011 12:17 pm
by gravaera
Wow, cool logo, yo :shock:

Re: Valix - Experiment in Design

Posted: Wed Jun 01, 2011 8:23 pm
by xvedejas
tekk wrote:I really have two basic questions:


1) Can you post an example of the language? python/ruby/smalltalk is a pretty broad spectrum of syntaxes..
2) will it be gui only or will you have the option of using terminal only if something goes wrong or you think it'd be more efficient?
The language is very similar to smalltalk in syntax, here's a working example:

Image

The OS will be GUI-centric but is like an interpreter at the moment for convenience in testing. The eventual plan is to have inputs (not unlike terminal emulators) that work as interpreters. But text-mode will be completely avoided.
DavidCooper wrote:Don't be disappointed by the general lack of replies - this looks like a very interesting project and I look forward to seeing where it goes.
Thanks! I feel like I'm making a lot of progress currently, language-side. My main issue is that I'm more a mid-level coder than a low-level coder, so I don't have all the patience to write too many drivers for Valix. Note to anyone out there working on their OS, if you want to collaborate to implement some common driver interface, that would be really cool with me.

Chandra wrote:But truely, something interesting info about your project would've carried out a lots of interest. Much of the obvious differences you mentioned doesn't look that convincing.
Do you really think so? I'm sorry you feel that way. I certainly plan to be different in even more ways in the future; the point is to experiment, and *I* at least find that quite interesting.
Chandra wrote:I didn't get to see the original project though; so, no comments.
The code is freely available at http://gitorious.org/valixos. I'm not sure what you mean by "original project" though, there was no previous original project.
gravaera wrote:Wow, cool logo, yo
Chandra wrote:The "VALIX" logo is cool.
Thanks; I made it myself using inkscape.

Re: Valix - Experiment in Design

Posted: Wed Jun 01, 2011 9:31 pm
by Chandra
xvedejas wrote:
Chandra wrote:I didn't get to see the original project though; so, no comments.
The code is freely available at http://gitorious.org/valixos. I'm not sure what you mean by "original project" though, there was no previous original project.
By "original project", I meant "actual project". I was not referring to the source code. I was expecting some sort of demo release or some such. It definately is hard to leave compliments without actually looking at the project.
xvedejas wrote:
Chandra wrote:But truely, something interesting info about your project would've carried out a lots of interest. Much of the obvious differences you mentioned doesn't look that convincing.
Do you really think so? I'm sorry you feel that way. I certainly plan to be different in even more ways in the future; the point is to experiment, and *I* at least find that quite interesting.
I didn't mean to discourage you but being different doesn't always necessarily mean being better.
xvedejas wrote:The kernel doesn't need to handle any binaries at all, and in fact things like task state segments or protection rings can be ignored completely.
So there's no things like 'Ring 0' or 'Ring 3' ? Then how the whole protection mechanism works? Is it the fact that programs are dynamically linked creating a misconception in you that they can't break your kernel?

You shouldn't feel offended because this thread is about 'Valix'. And I really feel that whole protection mechanism is weak. So maybe we could discuss some aspects of 'Valix' so that we could make 'Valix' a better OS.
You really have a lot of self-motivation and commitment going on with you. Good Luck!

Re: Valix - Experiment in Design

Posted: Thu Jun 02, 2011 10:25 am
by diodesign
xvedejas wrote:I certainly plan to be different in even more ways in the future; the point is to experiment, and *I* at least find that quite interesting.
And so you should: if Microsoft is prepared to do drastic stuff to its desktop UI in Windows 8 ( http://bit.ly/jYqLsQ ) then that should give osdev hobbyists encouragement to try new things.

Re: Valix - Experiment in Design

Posted: Thu Jun 02, 2011 12:14 pm
by xvedejas
Chandra wrote:I didn't mean to discourage you but being different doesn't always necessarily mean being better.
The question wasn't about "better", it was about "interesting", and I do think that different (in this case) means "interesting".
Chandra wrote:So there's no things like 'Ring 0' or 'Ring 3' ? Then how the whole protection mechanism works? Is it the fact that programs are dynamically linked creating a misconception in you that they can't break your kernel?
Oh no, I see what your misunderstanding is. The code isn't dynamically linked, it's not linked at all. It's interpreted, much akin to python or ruby. The protection is software-implemented instead of hardware-implemented. Everything a program does has to go through the VM first, so the security is much, much greater than you'd expect.
Chandra wrote:And I really feel that whole protection mechanism is weak.
You've misunderstood, if you need clarification that's acceptable.
And so you should: if Microsoft is prepared to do drastic stuff to its desktop UI in Windows 8 ( http://bit.ly/jYqLsQ ) then that should give osdev hobbyists encouragement to try new things.
As far as I see it, the only real advantage hobby OS developers have is that we are free to break all compatibility and experiment. We're light on our feet, so we can do things that microsoft or apple never would (if they care about their bottom line). Really anything should give hobbyists reason to try new things, and hopefully radically new things.