Valix - Experiment in Design
Valix - Experiment in Design
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 :)
Valix is an experiment in an interpreted userspace with object-oriented and functional design patterns. Developers needed! Join #valix on irc.freenode.net
Re: Valix - Experiment in Design
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?
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?
- DavidCooper
- Member
- Posts: 1150
- Joined: Wed Oct 27, 2010 4:53 pm
- Location: Scotland
Re: Valix - Experiment in Design
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.
Help the people of Laos by liking - https://www.facebook.com/TheSBInitiative/?ref=py_c
MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
MSB-OS: http://www.magicschoolbook.com/computing/os-project - direct machine code programming
Re: Valix - Experiment in Design
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.
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.
Programming is not about using a language to solve a problem, it's about using logic to find a solution !
- gravaera
- Member
- Posts: 737
- Joined: Tue Jun 02, 2009 4:35 pm
- Location: Supporting the cause: Use \tabs to indent code. NOT \x20 spaces.
Re: Valix - Experiment in Design
Wow, cool logo, yo
17:56 < sortie> Paging is called paging because you need to draw it on pages in your notebook to succeed at it.
Re: Valix - Experiment in Design
The language is very similar to smalltalk in syntax, here's a working example: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 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.
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.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.
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: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.
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.Chandra wrote:I didn't get to see the original project though; so, no comments.
gravaera wrote:Wow, cool logo, yo
Thanks; I made it myself using inkscape.Chandra wrote:The "VALIX" logo is cool.
Valix is an experiment in an interpreted userspace with object-oriented and functional design patterns. Developers needed! Join #valix on irc.freenode.net
Re: Valix - Experiment in Design
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: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.Chandra wrote:I didn't get to see the original project though; so, no comments.
I didn't mean to discourage you but being different doesn't always necessarily mean being better.xvedejas wrote: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: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.
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?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.
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!
Programming is not about using a language to solve a problem, it's about using logic to find a solution !
Re: Valix - Experiment in Design
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.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.
Re: Valix - Experiment in Design
The question wasn't about "better", it was about "interesting", and I do think that different (in this case) means "interesting".Chandra wrote:I didn't mean to discourage you but being different doesn't always necessarily mean being better.
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: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've misunderstood, if you need clarification that's acceptable.Chandra wrote:And I really feel that whole protection mechanism is weak.
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.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.
Valix is an experiment in an interpreted userspace with object-oriented and functional design patterns. Developers needed! Join #valix on irc.freenode.net