Despite what the project name’s suffix might imply, Whitix is in fact not a Linux distribution. Whitix is a new operating system, written from scratch, and aims to combine the stability of UNIX with the user friendliness of other platforms. “It will offer a consistent, clear interface and a new way to navigate the desktop while basing the fundamentals on proven system technology updated for the twenty-first century.” The project released version 0.2 today.
Whitix 0.2 delivers several key improvements over the previous alpha release. It comes with a new hard drive installation utility (no partitioning support yet, though) which also sets up GRUB. File system support has also been broadened by adding write support for ext3, and read support for ReiserFS. There are more under-the-hood improvements, such as over 100 bug fixes in the kernel, as well as the introduction of KeObject and IcFs.
Various tools have also been ported to Whitix, such as Mono, the Mono c# compiler, GCC, LD, and make. The Burn shell has also seen a number of updates, such as tab completion in the new help system, as well as colour highlighting to display correct commands and parameters.
The project is licensed under the GPL, and can be downloaded from the download page.
Sounds like the Linspire sales pitch to me.
It uses Mono (C#) as the primary language, trying to force users to use “managed code” for their apps. I guess “programmers” today need someone to hold their hand and wipe their butt. Back in my day, we actually PROGRAMMED.
It’s not the code that needs managing, it’s the programmers. It would be better if they actually learned how to program before trying to write major apps. Today, every Tom, Dick, and Harry thinks that being able to make a “Hello World” app in a managed language somehow makes them a programmer.
YEAH ! punch cards .. them’s what REAL programmers use!
Matthew Whitworth here. We support Mono as a platform, but where did you get the idea it was the primary language of Whitix?
Well, your site is down right now or I’d quote the parts I read, but there was a section that talked about Mono being the programming language used, and another that one of the primary goals for the system was the promotion of managed code for applications.
Edited 2009-01-08 07:31 UTC
See, it just became much more interesting to me, and I’m going to go read some docs and download some images based on this line alone.
By “actually programmed”, I think you mean “dealt with repetitive memory-management issues that took zero knowledge to understand, would cause horrible bugs (that could cascade to causing system-level crashes) if ever missed or done slightly incorrectly (which even experienced programmers did at 4 in the morning when they had run out of coffee), and which can be automagically done away with through modern programming tools”.
At least, I think that’s what you mean. I do not think “actually programmed” means what you think it mean.
When I saw this news listing I thought, “oh great YET ANOTHER OPERATING SYSTEM…”
It’s not like we don’t have ENOUGH operating systems that are half done.
So off I surfed to the website and I saw, “Python, Mono…” And then I became interested!
I also think that while “real men” program in “real languages”, those days are gone. I myself have programmed in C, and C++, but to go back to C++ it would have to be with a pointed gun!
C I can understand since there are some real needs for C. But C++, and what it has become, is simply too complex.
Couldn’t get the version 0.2 CD to boot. Just kept rebooting the computer. Tried version 0.1 with the same results. Sometimes it would briefly flash a screen with “Loading…” and then reboot, but most times it’s simply rebooted into a loop.
I don’t have another computer handy at the moment to test with. Did anyone else have a problem?
Sorry to hear that. What are the specs of your machine? (It may be linked to the amount of memory you have)
(Edit: I’ve seen your report on the bug tracker, so I’ll take the discussion there).
Edited 2009-01-07 08:50 UTC
The “GUI” provided is useless. Either locks up after a couple of seconds or crashes. Same with 0.1.
That’s the first we’ve heard from quite a few testers that the GUI is “useless”. We’ll try and released an improved version for the next minor release (drivers for ATI and NVIDIA cards are in development).
Are there any particular things you do before it freezes up?
Actually, we’ve got more reports of programs freezing up. Thanks for letting us know, and we’ll try to make 0.2.1 a release where Xynth doesn’t suck.
I wonder why you have chosen this path.
Obviously, you are making another Unix clone, using C as the programming language. Don’t you realize that the problems IT faces today are largely due to the Unix/C model? this model is about the 90% rule, i.e. if it works in 90% of the cases, then it’s OK.
Unfortunately, this does not work in real life. The 10% of what does not work in C/Unix have caused big problems that have cost billions of dollars in the IT industry.
In your site, you have a section ‘ideas’. But I see no new ideas really, just a rehash of old ideas: gcc, virtual memory, processes, files, etc. These things have been done before and with success, but also with many problems. Isn’t it time to move beyond files and processes?
Definitely. I agree with you. However, we’re definitely innovating, but we have to tread a thin line; if we’re too new and weird, hardly any software will run on Whitix, and no-one will use it.
We’re trying to innovate within certain boundaries; IcFs is a new idea, as no-one has completely replaced ioctl with such a clear system of configuration and information. 0.3 will feature a userspace network stack, and there’s talk of writing some kernel modules in D and other safer languages; we’re constantly experimenting and certainly not driven by strict conformance to POSIX. (for example, I’m changing ‘rm’ and ‘del’ on the command line to use a recycler based model when deleting files; a long-standing criticism of Unices).
We’ve got loads of ideas at the moment (if you ever cross paths with DuckFault, who hangs on chat; that guy is loaded with new and intriguing ideas), but it’s just the manpower needed to put those ideas into practice. However, I feel we’re coming up with new ideas all the time; we’re 20% there!
Thank you for replying. I hope you don’t mind if we continue this very interesting dialogue.
Why do you think that any existing software should run on a brand new operating system?
If the purpose is to run existing software, then existing operating systems will do fine.
If the purpose is to write new software that mimics existing software, then existing operating systems are more than enough.
You should not desire existing software to run on your operating system. You should desire the opposite: that no existing software can run on your operating system! this would mean that your operating system has some true innovations!
All the things you mention (ioctl, userspace, kernel, kernel modules, the command line, files etc) are things that belong in the classic design of operating systems.
Shouldn’t you think outside of the box, if you want to make new and radical things that will make your project a big success?
I am a software developer myself, dying to find some ground for testing and developing a new approach to software. It’s obvious to me that the current model does not scale well. Things that should be trivial take huge amount of resources to implement. Programs are bug-ridden, testing takes too long.
New approaches are needed both at the programming language level and operating system design level.
Because past experience has shown that if you try and invent everything at once, (from what you’re saying, I shouldn’t need a C compiler, managed runtime or anything like that; but how would people develop software?) it doesn’t ever get too popular (because there’s no way for existing people to move over) and you may end up getting stuck in development hell.
I find the ‘let’s reinvent everything’ approach quite attractive, but it’s not practical from my particular viewpoint. I’ve always been a ‘let’s build a good base and then improve this and make it different, then this, then another thing’.
I like your attitude (we always need blue sky thinkers as a society) and I agree with you on the scaling point. Do you have any particular ideas you’d like to see implemented?
Edited 2009-01-07 17:02 UTC
If you build a truly advanced O/S that minimizes the problems existing operating systems have, people will come to your O/S.
Some ideas:
1) portability: build the O/S on a virtual computer architecture. Have the code be translated on the fly to native code by a mini translator kernel, thus making the O/S portable. The only part to then rewrite would be the mini translator kernel.
2) multithreading: do not program it in C. Use an object-oriented language that is Actor-based. Each actor could be potentially a thread, depending on hardware configuration. Future machines that will contain thousands of cores will run your code much faster, without the need for recompilation. Future generations will thank you immensely :-).
3) memory management: make everything garbage-collected. Easy, since you are dealing with objects. No more crashes due to erroneous pointers.
4) files: since you are using objects, store the objects in the storage, not files. This solves another big problem, i.e. I/O. Provide transactions. It also solves another big problem, i.e. how to manage a file without the application that created it.
5) filesystem: do not use a hierarchical storage system. Provide views and queries. If your object-oriented language has introspection, then data management will be greatly simplified for all the applications and for the O/S itself.
6) networking: making your object system distributed. Instant client-server architecture, easy centralized deployment.
7) gui: make GUI displays vectorized, build out of actor objects, of course. If your objects are automatically networked (see #6 above), then you also get the benefit of a remote GUI.
8) text: forget ASCII, UTF8, UTF16. Storage is plenty these days. Go for UTF32. Everything should be in UTF32.
9) security: since networking will be automated, use end-to-end encryption (goodbye security problems).
Edited 2009-01-07 21:48 UTC
Hear, Hear! I absolutely agree 100%! Everyone knows how well vector graphics scale; I’m surprised no one has thought of this sooner.
Edited 2009-01-07 22:50 UTC
a C/C++ written kernel is also portable, if you care to structure it in a modular way and rewrite the architecure abstraction parts…
any VM must necessarily know about the underlying CPUs’ ML, and/or fragments of native binary code to instantiate and run corresponding to the various high level language constructs it encounters in the sources – so it doesnt automatically provide for portability, or portability isnt’ the most advantageous asset of a VM
instead, what a VM (better, in this case a JIT system) is advantageous for, is run time optimization, since the later code generation is done the better code is produced (because more of the operating context is known at runtime)
views and structures are useful for data *presentation*
but what about on disk allocation?
but very complex system design, with some tough across-network consistency problem to solve at protocol level…
do you really need it?
or maybe CloudNine would be better off by looking at the requirements of the systems “he” wants to build (distributed objects may be very cool from a “research” standpoint, or for a Grid/ Cloud Conputing system, but maybe he wants o build an effcient desktop OS), then tackle them one at a time?
it’s interesting to notice that:
a) linux /unix is the only existing class of OS’s on which the gui is based around a network transparent protocol and API,
but b) linux is not the predominant “desktop” OS – the dominant desktop OS even is a non-posix one, and among desktop oriented posix derivatives, the most successful one does not have a network transparent gui system (and relegates the network transparent one to an optional service for legacy/foreign app support)
c) on linux itself, more and more efforts are made to decouple the local graphic stack from the network (optimizing for local operation on a more compact server tan xorg, or on the toolkit side, moving from x primitives to rendering directly to ogl surfaces)
is it advantageous to design a gui with network transparency in mind from the start, then? i doubt, since the x protocol’s focus on network transparency has been recognised as a bottleneck and a source of inefficiences, for at least a decade (mark kilgard’s D11 paper is dated 1996 iirc)
unfortunately, there are whole classes of problems in the security world, beyond wire data protection…
Edited 2009-01-08 16:16 UTC
A C kernel is portable but a) you have to recompile it, b) you have to take into account the platform-specific parts (pointer size, integer size etc), usually done via the preprocessor.
A C++ kernel may be portable, depending on compiler. In C++, the language does not deliberately define a lot of things, so what works in one case does not work in the other, without any means to know it or alter the behavior using a preprocessor.
Additional disadvantages of C/C++ are:
1) you have to recompile everything for a new architecure. With a VM, the binary runs ‘as-is’.
2) C and C++ do not provide the stability and safety features required for a modern O/S.
3) writing code in C/C++ takes twice the time than in another language because of code duplication in the headers.
4) code written in C/C++ can not be automatically parallelized. Future machines will have thousands of cores.
5) C/C++ code can not have precise garbage collection.
Not at all. Neither .NET nor the JVM nor the Parrot VM contain tips for high level constructs. But code in them is portable.
Portability is the most important advantage of a VM. Applications written in Windows must be billions of lines of code…imagine the effort required to compile all of that for a new architecture. With a VM, you get instant portability.
You only need flat inode and block index tables.
Oh yes you absolutely need it.
I am not talking about this specific project. He can do whatever he wishes. I presented my own wishlist for an operating system.
a) You forgot NeWS, which powers most of the tactical systems of warships.
b) Web applications are networked GUIs.
Windows contains a lot of hacks to achieve what X-Window based systems naturally achieve.
With the system I propose, local objects will talk directly to the video driver, remote objects will send a message in order to talk to the video driver.
The idea is that the network would be truly transparent, i.e. the network will get involved only when required, and that would be for any object.
It is not like the X-Window system that everything has to pass through some network stack.
That’s because the network transparency of X-Windows is limited to the X-Window system itself.
With the system I propose, there is nothing that keeps parts of widgets from running on the display server.
A system like the one I propose simultaneously replaces the X-Window system, web applications and Flash.
Sure, you need a robust security model. But at least one problem goes away with end-to-end encryption.
Edited 2009-01-09 00:02 UTC
1) I like this idea but *not* for the kernel. Only userspace… Im guessing you never have used java to much? Run once debug everywhere? Which is due to differences in the JIT compiler on different hardware.
2) Bad idea OOP does not translate well into hardware. It’s doable but not easy.
3) Another bad idea I want as little between me and the hardware if I’m programming something embedded.
5) I don’t like it. Personally I would not want to query for data. I envision a distributed FS that automagicly replicates on demand, etc.
1) why not for the kernel? you don’t give any reasons. I am a Java as well as a C++ programmer.
2) all modern operating systems are object oriented, they just do OOP in C. The IOCTL interface is a method of dynamic dispatch. Most kernel objects have vtables in them. Mounting of different devices in the same namespace is achieved through vtables. IPC is a form of dynamic asynchronous dispatch. All these are covered by the Actor model.
3) It’s better to have garbage collection as the default and then provide the tools to disable it as required than the opposite. It’s better to have safety first, performance second, than performance first, safety second. It’s the lesson taught by C/C++ which chooses performance first, safety second.
5) each time you see a folder on your file window, you see the results of a query. You already use queries, you just don’t know it. My idea does not prevent an distributed FS, in fact, it’s way simpler to do with the programming language I describe above than with conventional languages.
contrary to what many people want to believe, an Operating System is only useful as the applications it’s able to run
on one hand, there’s a very many applications out there today, that form an established workbase and are respected in and as themselves – supporting those applications or at least letting them be easily ported, would be a major asset for any new operating system (while their absence can – and often does – impede the OS’ foray into relevance)
on the other hand for very many people just the applications they use count, and couldnt care less about what makes them run
lastly, today’s operating systems (even more so those based on the old unix / posix model) are far from perfection, and show VAST room for improvement (even with regards to the way they run CURRENT applications)
no existing application being able to run on a from-scratch-written operating system, is an obvious consequence (unless binary compatibility with applications compiled for other Os’s is provided as an intended feature by the new OS)
BUT, one thing is designing and developing an OS from scratch in such a way that forces third party developers to entirely scrap their codebase and write an entirely new generation of SW,
another is develping an elegant and efficient OS that allows developers of established applications port their SW with minimal effort
which did you mean?
I meant forget everything we know so far and truly innovate.
If I was making an O/S, I would not want current software to be ported to it, because the current software would not use the innovations of the O/S.
Hi
i’ve just finished reading the introduction to IcFs on the website and noticed that only the unix / linux and the win NT ways of doing device mode setting are taken into consideration …
please, please don’t restrain yourself to those two, things have been dealt with and eviscerated in more varied ways already (i’m especially thinking of the L4 or EROS microkernels based systems)
if i were to develop an entirely new OS kernel, i’d base it all around message based IPC (that would natively support upper level communication AND notification protocols without requiring userspace daemons), with the concept of operation-associated capabilities, and leverage a fast and orthogonal LRPC – like implementation
[the latter essentially is inter process procedure calling done by means of argument/return stack(s – optionally queued) sharing, call stub <-> method binding and address space switching mechanisms to have low latencies and execution overhead;
moreover, being a kernel mediated mechanism (for the querying / binding step and the address space switch involved) means it could be used for accessing drivers (or other kernel subsystems) the same way as external services – and calling specific interface functions instead of generic read/write/open/… ones
but it’s just my take
>and there’s talk of writing some kernel modules in D and other safer languages
I for one think, keep it up! This is exactly what we need.
Yes somethings need to be in C, and some things need lower level features. BUT there should be as much use of safer languages as possible.
Keep up the new thinking…
First of all, I’m not out to flame as I welcome new any new OS in development (be it home-brew projects to big corperate experiments).
Just want to point that out so you understand the context of my posts from a curious nerd rather than an internet troll.
Anyway, my questions:
1/ On you’re home page you said “[Whitix] will offer a [snip] a new way to navigate the desktop” yet your screenshots imply you have the standard Windows / KDE style desktop environment. What’s new to your DE that the other big suites (Windows, OS X and the bigger GNU DEs) don’t already offer?
2/ As I understand it, you’re open source and setting out to be UNIX-like while being desktop orientated and aimed for the n00bie. What made you choose to build your own kernel over (for example) Linux or FreeBSDs and having a welth of source already available (from drivers to windows managers) and adapt them for your specific needs? Particularly when distos like Ubuntu are already making great strides to be n00bie friendly (not that i’m ungreatful for another user-focused OS beign developed)
Sorry for commenting before trialing the OS – I will give this a play when I get time (quite looking forward to it, in fact) but it wont be for a few days and wanted a few questions answered while you were active in this discussion.
Laurence
I’m glad you’re interested. Here’s my replies:
1) The key word here is “will”. At the moment, it is indeed a standard desktop environment (and one I’m not too proud of; see above ). I’ve got ideas for desktop search, using file stores and versioning (a la GNOME Storage) that I’ll implement using managed languages. If you’d like, I can write a series of blog posts on my ideas for the future desktop? It’s basically a matter of manpower; I’ve written 99% of the code so far, but I’m only one man
2) I think it was a general resistance to focus completely on the desktop and managed code, as well as new ideas that would require a lot of rewriting and testing of any source. Perhaps, if I were to go back three years or so, I might have started on the userland and then moved to the kernel, but I don’t actually regret it.
The whole idea of Whitix is that we’re trying out some great new ideas (one of the ideas posed yesterday on chat was a more general access control mechanism in the kernel (if I want to access my own wifi but not let anyone else on the computer do so, how can I do that with current OSes?).
A lot of innovation will take place on the desktop this year in Whitix, and 0.2 was/is really a release that’s getting the framework ready.
Hope you’re happy with those answers, and I hope you enjoy it. After all, it’s a hobby I enjoy doing
Yeah, that’s great. Thank you.
Looks damn impressive for a one man job too
Thanks. Lots of other people are joining the chat (shameless plug: irc.freenode.net , #whitix ) and hopefully the team with new ideas, so I don’t think it’ll be a one-man slog any longer!