Linked by Thom Holwerda on Sat 15th May 2010 19:23 UTC
OSNews, Generic OSes There's one complaint we here at OSNews get thrown in our faces quite often: what's up with the lack of, you know, operating system news on OSNews? Why so much mobile phone news? Why so much talk of H264, HTML5, and Flash? Where's the juicy news on tomorrow's operating systems? Since it's weekend, I might as well explain why things are the way they are. Hint: it has nothing to do with a lack of willingness.
Thread beginning with comment 424834
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Comment by mtzmtulivu
by Neolander on Sun 16th May 2010 08:48 UTC in reply to "RE: Comment by mtzmtulivu"
Neolander
Member since:
2010-03-08

/begin rant

I'd argue it is Macwinnix because although Linux is the most visible *NIX out there, it would also be correct to note that pretty much every 'new' operating system today is a variation of *NIX rather than a totally new idea form the ground up or at least a clone of a not very well known operating system.

I agree with you. Unix vs VMS's and DOS's ugly grandson is boring. I agree that UNIX was a cool OS back on its days, and certainly still is for servers, but it's not meant to be a desktop operating system nor is not good at it.

UNIX is an OS family where the preferred data type in system calls is char*, which was not designed with multitasking in mind at all, whose standard GUI structure is horrible (a single app can take down everything by crashing), and for which "event-driven", "pop-up threads" and "asynchronous" are scary words which only get rarely used...

Things are no better in the Windows side. Sure, it's finally stable, but
-The kernel is horribly bloated. In fact, the whole OS suffers from an insane bloat level.
-Everything is still pixel-based
-Just every driver installation CD sees some obvious need to reinvent standard controls and break interface consistency
-There's still a lot of silly popups.
-A web browser is used to render every single system windows, in order to justify its infamous presence.
-When you want to install an app, you still have to give full admin rights to an untrusted "setup.exe" program.

And so on... In fact, Windows could be a good OS, provided that it did not bear the Win9x legacy and had a simpler kernel structure. But it does bear this legacy, and unless a complete rewrite occurs someday it will bear it forever.

I know, I know, desktop is not everything. But that's because things are pretty much mature on the server side. Sometimes, we get a new filesystem, yeah. A 10% performance increase. Or a compatibility layer which allows running apps from os Y on top of os Z with "almost no performance loss". And then life goes on. Revolutionary changes in the server area are planned with the advent of distributed operating systems which just about every computer science lab has a team working on. To the contrary, the desktop is still very immature, but does not get attention anymore.

That's why I'm working on a desktop operating system project. I try to prove that some real evolutions are still possible in that area. But it won't be ready tomorrow. And it could never be ready at all, even though articles like this are encouraging me to go further and prove that the desktop still has something to say.

The fact is, at the moment, I've got nothing that's worth showing. Only some written doc (targeted user experience and kernel design) and a code which turns multiboot data into something useful and arch-independent, and which *almost* turns long mode on. Until I get a fully working µkernel, there's nothing interesting here. And until I get some usable GUI running on top of it, there's nothing worth showing here at OSnews.

It'll take a year or two, at least, before I get a stable GUI, if I take the time to write clean code (which I want to do). Hence, at the moment, I can only agree with this article : it's sad that OS development is so out of fashion, especially in the desktop area, and that people now learn C# and Java instead of C++ and C. But well... If you want this to change, change it yourself ;)

/end rant

Edited 2010-05-16 09:03 UTC

Reply Parent Score: 1

RE[3]: Comment by mtzmtulivu
by kaiwai on Sun 16th May 2010 11:11 in reply to "RE[2]: Comment by mtzmtulivu"
kaiwai Member since:
2005-07-06

I agree with you. Unix vs VMS's and DOS's ugly grandson is boring. I agree that UNIX was a cool OS back on its days, and certainly still is for servers, but it's not meant to be a desktop operating system nor is not good at it.


Yeap but it amazes me why we as a people keep gravitating back to UNIX as if it were the pinnacle of perfection when in reality it was a piece of GET (Good Enough Technology) where superior alternatives have been provided since. OpenVMS - why hasn't anyone re-implemented OpenVMS in pure C99? then there is the UNIX route, ok there are some great ideas - so why not embrace Plan9? sure the licence might not be to everyones taste but why hasn't anyone implemented Plan9 in a LGPL and run with many of these ideas that were laid out? it is as almost we have legions of programmers who go into a parking lot looking for a get away car and of all the cars they could take - they choose the lada.

UNIX is an OS family where the preferred data type in system calls is char*, which was not designed with multitasking in mind at all, whose standard GUI structure is horrible (a single app can take down everything by crashing), and for which "event-driven", "pop-up threads" and "asynchronous" are scary words which only get rarely used...


You can multitask in a way, load something and then push it to the background ;) I'd say to be more correct the method of input wasn't conducent to a single end user multitasking - X11 was a nice idea but it was never fully standardised thus you end up with the situation we have today with two desktops that are each horrible in their own unique way.

Things are no better in the Windows side. Sure, it's finally stable, but
-The kernel is horribly bloated. In fact, the whole OS suffers from an insane bloat level.
-Everything is still pixel-based
-Just every driver installation CD sees some obvious need to reinvent standard controls and break interface consistency
-There's still a lot of silly popups.
-A web browser is used to render every single system windows, in order to justify its infamous presence.
-When you want to install an app, you still have to give full admin rights to an untrusted "setup.exe" program.

And so on... In fact, Windows could be a good OS, provided that it did not bear the Win9x legacy and had a simpler kernel structure. But it does bear this legacy, and unless a complete rewrite occurs someday it will bear it forever.


What Microsoft Windows reminds me of is a person who throws things against a wall until they find something that'll stick and then run with it or they have a good idea but never following it through to the logical conclusion. Take the registry, nice idea conceptually but when implemented there were no instructions as so far as how developers should use it and for times when they shouldn't use it. The net result - a good idea that should have worked in principle ends up getting used and abused to the point that it becomes the single vector for legions of people to spew hatred against. An otherwise innocuous operating system feature at the centre of discourse surrounding "what does Windows suck".

As for the res, what Microsoft need to do is provide a single interface for accessing each device. There is should be no reason for Intel or Lenovo to bundle custom interfaces and other widgets with their computers when the bundled interface should work nicely. Same can be said for scanners - there should be no reason for HP to provide a 200MB download just so someone can scan a damn picture - the only thing provided should be 5MB worth of drivers with the functionality being provided by the operating system through a set of built in tools.

Then there is the low levels of the operating system which always seems to me like a knee jerk reaction against UNIX rather than an operating system designed a certain way because it was the superior way of doing something. Decisions being made for political rather than technical decisions, focusing on delivering features rather than asking the question how that particular addition fits into the larger system itself. For example, when ActiveX was posed, why didn't anyone think about the larger implications of such a decision? how about the giving everyone admin privileges in Windows 2000 for the sake of compatibility - why didn't they tell developers during development to test their software with the most restrictive setting so then it would work with Windows 2000 users being setup in limited user mode?

End of the day, however, Microsoft has made their decision and it has little impact upon me given that I am not exposed to using their software other than what I purchase from their MacBU. In the end Mac OS X might not be perfect but at least fundamentally the issues are simply matter of fixing up bugs rather than fundamental structural issues - see Windows and shatter attack.

Reply Parent Score: 1

RE[3]: Comment by mtzmtulivu
by righard on Sun 16th May 2010 11:48 in reply to "RE[2]: Comment by mtzmtulivu"
righard Member since:
2007-12-26

I don;t know how long you're working one your OS, but if your still struggling with long mode a might suggest doing things the other way around...

First write your OS inside another host OS, it can still be as original and exiting as you want. You can still create your own memory management-, treading- systems etc. But this way you can focus on the exiting parts of an OS instead of writing boring video drivers which probably have become obsolete once you finished them and won't be new and exiting anyway.

Once this is done you can always create a micro kernel that removes the need for a host OS.

This is the way I'm creating my hobby OS.

Reply Parent Score: 3

RE[4]: Comment by mtzmtulivu
by Neolander on Sun 16th May 2010 17:47 in reply to "RE[3]: Comment by mtzmtulivu"
Neolander Member since:
2010-03-08

I don;t know how long you're working one your OS, but if your still struggling with long mode a might suggest doing things the other way around...

Not "still", actually, the biggest issue so far was about converting multiboot structures to something which better suits my taste ;) And it's close to being done, the code just needs some spring cleaning.

Long mode itself is easy. As the AMD manual says it best, it's just about 3 steps : PAE, LME bit, and paging. The first two are done. The last will be done after being done with the cleanup job. All paging structures are ready, it's just about writing some simple routines to use them...

First write your OS inside another host OS, it can still be as original and exiting as you want. You can still create your own memory management-, treading- systems etc. But this way you can focus on the exiting parts of an OS instead of writing boring video drivers which probably have become obsolete once you finished them and won't be new and exiting anyway.

Once this is done you can always create a micro kernel that removes the need for a host OS.

This is the way I'm creating my hobby OS.

Well, I'm having fun with low-level programming at the moment, and I already went too far to want to go the other way. Moreover, the VGA standards used for text-mode screen manipulation have been around since the 80s and still work with modern video cards, so I don't think that this is much of an issue...

Edited 2010-05-16 17:48 UTC

Reply Parent Score: 1

RE[3]: Comment by mtzmtulivu
by ricegf on Sun 16th May 2010 11:49 in reply to "RE[2]: Comment by mtzmtulivu"
ricegf Member since:
2007-04-25

"UNIX ... was not designed with multitasking in mind at all"

Not sure where you heard this (or maybe the message is getting garbled in transit?). Unix was the unexpected offspring of Multics - both were essentially *mainframe* operating systems that were built from the ground up to not only multitask, but also to handle multiple users as well.

Unix (via its second cousin Linux) scaled down from the big iron to servers, desktops, phones, embedded devices and watches; Windows scaled up from the microcomputer to servers, picking up multitasking (but still not good multi-user) along the way. (Mac OS/X is Unix with a proprietary shell; it could probably scale, too, if Apple let it out of its ivory tower.)

The rest of your rant is pretty much in sync with my 33 years experience, though. (Gads, where did the time go!?!)

Writing a new OS is harder than you think - Gnu Hurd has been in development for 20 years now, and they still don't have a beta release. And that's with backing from a major organization, FSF, where the kernel is a pretty visible initiative.

But please don't let that discourage you. Linus Torvolds was a hobbyist once, too, but I hear his little project - "nothing big and professional like gnu" - has done OK. Yours can, too!

Reply Parent Score: 2

RE[4]: Comment by mtzmtulivu
by Neolander on Sun 16th May 2010 18:08 in reply to "RE[3]: Comment by mtzmtulivu"
Neolander Member since:
2010-03-08

"UNIX ... was not designed with multitasking in mind at all"

Not sure where you heard this (or maybe the message is getting garbled in transit?). Unix was the unexpected offspring of Multics - both were essentially *mainframe* operating systems that were built from the ground up to not only multitask, but also to handle multiple users as well.

(as long as many other posts on the subject)

Yes, you're right, I've been going a bit too far in this part of my rant. What I had in mind was that...
1/You can *feel* that the UNIX family targeted people running one single task at a time on a dumb terminal. Example : run a CPU-intensive task in some kind of virtual terminal. Open a new tab or use Ctl+Alt+Fx and log in. Noticed how long it took for the shell to be ready ? Now run another CPU-intensive task in it, and try to open a new tab. Even slower. Notice that if you use an X11-based GUI, the whole UI becomes unresponsive. Try to run the CPU intensive task on the third tab. You can now go and do something else, the computer will be unresponsive to the point where it is unusable now. This was not an issue when people logged on a server with only one session at a time and ran only one program at a time. It's an issue for anything that's GUI-related.
2/Then, think about UNIX's traditional startup process : it runs a script shell, which then sequentially runs several tasks. If those tasks are IO-bound, the CPU will just wait for IO to complete. Many Linux distros are trying to get into parallel startup now, but they then have to get rid of the *huge* pack of script shells that are in use in the UNIX family.

Sure, UNIX knows how to put processes on multiple processors. If you ask for a new thread, it might even create a new one. But it's not optimized for people running multiple tasks, nor it's good at using multiple processes in its own code...

Writing a new OS is harder than you think - Gnu Hurd has been in development for 20 years now, and they still don't have a beta release. And that's with backing from a major organization, FSF, where the kernel is a pretty visible initiative.

But please don't let that discourage you. Linus Torvolds was a hobbyist once, too, but I hear his little project - "nothing big and professional like gnu" - has done OK. Yours can, too!

I know that it's hard. That's why I explained how small my chances of success are, and how long it'll take. After all, it's my third attempt. I already messed up two times. But this time, I have a good feeling. I feel like I have a global vision of what I want to do. I know where I go. I know where the information is. I've got some design doc around. Now it's just a matter of time... And as I said, it'll take at least 2 years till I get some usable GUI code (and probably 2 more years to complete the first GUI program in my roadmap, an IDE for making future development easier ^^)

Reply Parent Score: 1

RE[3]: Comment by mtzmtulivu
by WereCatf on Sun 16th May 2010 12:31 in reply to "RE[2]: Comment by mtzmtulivu"
WereCatf Member since:
2006-02-15

I don't really have much to say about the rest of your comment, but this exerpt baffles me... UNIX and all of its derivates were specifically designed with multi-user environments in mind as they were meant for use in supercomputers.

And you can't really design a multi-user system without designing multitasking along.

which was not designed with multitasking in mind at all

Reply Parent Score: 3

RE[3]: Comment by mtzmtulivu
by vodoomoth on Sun 16th May 2010 14:55 in reply to "RE[2]: Comment by mtzmtulivu"
vodoomoth Member since:
2010-03-30


That's why I'm working on a desktop operating system project. I try to prove that some real evolutions are still possible in that area. But it won't be ready tomorrow. And it could never be ready at all, even though articles like this are encouraging me to go further and prove that the desktop still has something to say.

The fact is, at the moment, I've got nothing that's worth showing. Only some written doc (targeted user experience and kernel design) and a code which turns multiboot data into something useful and arch-independent, and which *almost* turns long mode on. Until I get a fully working µkernel, there's nothing interesting here. And until I get some usable GUI running on top of it, there's nothing worth showing here at OSnews.

It'll take a year or two, at least, before I get a stable GUI, if I take the time to write clean code (which I want to do).

@Neolander: I am more than willing to contribute to your project. Do you have a thread on some forum or a Sourceforge page started ?

Unless such a thing exists and I'm not aware of it, I think OSNews should have a forum were topics could be forked from the news. It's quite frustrating (I repeat, "unless it already exists") that comments cannot be posted on articles that are more than five days old. I'm referring specifically to the article where there was a link to Kroc's vision of what the dream OS would be (user and task-centric, no branding, no bloated apps like iTunes; that's IIRC). Back to the topic at hand, the reasons why we don't see the silhouette of a real "revolution" necessarily comprise these two:

1- some paradigms have emerged as the best. Specifically thinking of preemptive CPU time-sharing techniques. Although I recall (probably 4 months max) reading an article about a member of Microsoft's OS core team pointing out the need to rethink how the processor is used (wrt system space and user space) due to old designs applying to more recent multiple-core architectures. I think OS originality comes from design decisions or orientations; the rest is just accessory. None of this exists today: the file system explorers on Windows and Ubuntu look like twins of Finder, with more options, true, but still clones.

2- As I've pointed out in another article about Ubuntu 10.04, all OSes I've tried (all Windows except 7, MacOS 10.5 and 10.6, Linux - at various times in the past 13 years but it's never looked mature enough for my taste, except Kubuntu 10.04) suck and deserve a good "zéro pointé" (meaning zero plus half of zero) spoken out loud and clear for all that's related to speed.

In an OS, speed and user-experience (not the geek, the lay user, like any grandmother) should be the only design concerns. Any current OS on a current machine should ideally start in less than 15 seconds. Applications should launch and be usable in 2 seconds. Just as snappy as uTorrent on Windows or the new Opera 10.53 on MacOSX when loading a page on a good broadband connection. Anything longer than that on today's computers is either badly crafted or inherently flawed design-related (is that correct English ?).

Another thing to avoid as much as possible: drivers... The situation with Windows is just insane and ludicrous: plugging the same USB device in four distinct ports installs the device driver 4 times!

My advice for your project: before heading into code, choose your design goals clearly; in all cases strive to keep things: 1- minimal, 2- extensible and 3- easily configurable by average Joe. There's no point in having 60+ processes (current Vista) when the system has started after 3 minutes+ of painful loading and the user hasn't launched a single program yet. I understand having to wait longer when more options are on, I don't understand having to wait that long when I just want to retrieve some info from some text file or browse the web.

Reply Parent Score: 1

RE[4]: Comment by mtzmtulivu
by Neolander on Sun 16th May 2010 19:53 in reply to "RE[3]: Comment by mtzmtulivu"
Neolander Member since:
2010-03-08

@Neolander: I am more than willing to contribute to your project. Do you have a thread on some forum or a Sourceforge page started ?

At the moment, I only have a blog ( http://theosperiment.wordpress.com ), which I use when I want to get rid of some confusion in my head : if something is puzzling me, I write an article about it. The act of writing helps me in the task of thinking rigorously and solving design problems.

As I said above, I'll probably open a sourceforge page and make a serious page for my project once I've got a working micro-kernel. I want to do this part alone, because...
1/Writing it is quite a sequential task.
2/It's a personal challenge, to know if I'm ready to go further ;)
3/When writing code, I'll probably make new design decisions as needed. I want to have a complete and stable design doc to release along with my source code. For design doc stability, I'll wait for the kernel to be completed before making an "official" one ^^

2- As I've pointed out in another article about Ubuntu 10.04, all OSes I've tried (all Windows except 7, MacOS 10.5 and 10.6, Linux - at various times in the past 13 years but it's never looked mature enough for my taste, except Kubuntu 10.04) suck and deserve a good "zéro pointé" (meaning zero plus half of zero) spoken out loud and clear for all that's related to speed.

Yes, considering how fast are today's computer, that's extremely funny. I think this comes from ageing code which reaches end of life and gets more and more bloated. You should have a look at Haiku, as an example : it's a young project, and performance is extremely good.

In my opinion...
1/The key to actual speed is clean and lean code which scales well.
2/The key to perceived speed is good priority management (user input management as top priority), always providing some kind of feedback, and keeping the user busy. ^^

In an OS, speed and user-experience (not the geek, the lay user, like any grandmother) should be the only design concerns.

Wrong. In my opinion at least, there's other major issues : reliability, security, and adaptability are among them. Would you like a very fast and very easy to use OS where some random program can steal your e-mail credentials and send them to a big spamming corporation ?

Any current OS on a current machine should ideally start in less than 15 seconds. Applications should launch and be usable in 2 seconds. Just as snappy as uTorrent on Windows or the new Opera 10.53 on MacOSX when loading a page on a good broadband connection. Anything longer than that on today's computers is either badly crafted or inherently flawed design-related (is that correct English ?).

(Won't help you for the English, I'm french ^^)

I mostly agree, but keep thinking about perceived performance too : if you can't make some code faster for some reason, then at least make sure that the user is asked for input as soon as possible and can then do something else while waiting for the task to be completed. This way, perceived loading time and performance will be good, even though there's still some work going on in the background.

I learned it in an ergonomics manual : keeping the user busy is always a good thing (TM) ^^

My advice for your project: before heading into code, choose your design goals clearly; in all cases strive to keep things: 1- minimal, 2- extensible and 3- easily configurable by average Joe.

See blog posts starting with 28/02/2010 ^^
http://theosperiment.wordpress.com/2010/02/28/scope-statement-1-use...

There's no point in having 60+ processes (current Vista) when the system has started after 3 minutes+ of painful loading and the user hasn't launched a single program yet. I understand having to wait longer when more options are on, I don't understand having to wait that long when I just want to retrieve some info from some text file or browse the web.

I agree, again, that things must always be kept clean. Non-mandatory things must be loaded in the background, after the user is logged and gets some usable interface, without interfering with its interactions with said interface. But about processes, I might get a lot though ;) It's an inherent part of my microkernel + isolated design.

Edited 2010-05-16 20:05 UTC

Reply Parent Score: 1