Fog Creek Software
Discussion Board




Compatibility and Operating Systems

Warning: long post. :-D

Linux is gaining more and more ground these days. Or UNIX actually. And I don't just mean server-wise, I also mean desktop-wise. Think OS X here. Think gnome, kde.

Of course, today, it looks the business. It looks "cooler" than Windows, and it is maybe just as usable. But what does it mean for us, developers? It means that we may need to know the quirks of another API, because face it: the UNIX API was never really better than Windows' API.

At the same time, Microsoft is going .NET - yet another API and platform. Also, Sun has done Java. And of course there are other platforms as well - take any scripting language, maybe even Flash ActionScript. Yeah, maybe even consider XML a platform.

What's my point here? Well, I'm developing just another platform. Yes, I'm "coding" my own OS. Laugh at me, it's alright. But today I finished the kernel, and I can start thinking about drivers etc. No! It's not one of those "hobby" OSses. I'm not using the excuse of it being small or simple or fast like many others, because they usually don't know a f* about schedulers, or writing safe code, or whatever.

It's all my very own work, in assembly, and it has a really elegant API. Genuinely elegant, engineering-wise. I'm really serious about it, so I need your advice. Would there be any chance of me making money out of it someday, if I don't adhere to using /home/ as a home directory? Or if it doesn't have a button labeled "start"?

How far would you go, compatibility-wise? Would you port GCC, or maybe Java? I'm still at the point where I can change pretty much everyting, as my microkernel is all there is now. But developement is going faster and faster - I can already see the effect of elegance :-D

Maybe I should say that I'm a Dutch CS student. It's 18:10 and I'm hungry. Forgive me any spelling or grammar errors. Throw an exception if I made any, to keep this forum nice and elegant. Be back after dinner.

Cheers,

Jay.

What do you think?
Monday, May 10, 2004

I'm not sure I believe that someone who says "the UNIX API was never really better than Windows' API" is a good judge of elegance.

rob mayoff
Monday, May 10, 2004

A chance of making money with it?  Not much, honestly.  If you want it adopted, give away development tools for it.  That can mean writing a gcc back end for it, and binutils as well, or it can mean writing your own, or you could even contribute to OpenWatcom.  Once you are giving away compilers, also give away libraries.

You don't have to make these things open source, by the way.  Just make them free as in beer, and let people write all the code they want using your tools.  Let them write GPL code if they want, let them write commercial code if they want.

My point here is to eliminate any and all barriers to people who want to adopt the OS.  I'm not saying make the OS free - make it easy to use, and easy to write for.

anon
Monday, May 10, 2004

"Have solution, need problem" is usualy not the way to go unless you are targetting a properous carreer in academia.
What is the niche you are targetting? Real-time, tiny footprint, ... once you decide on this some options might be clearer.

Just me (Sir to you)
Monday, May 10, 2004

I can understand and appreciate how exciting it is to write a brand new "elegant" operating system.  But you must not lose sight of reality.

I am not a professional programmer.  I don't care how "elegant" your operating system is.  I don't care about operating systems at all.  **I SIMPLY WANT TO GET WORK DONE.  PERIOD. **

I have a lot of time and money invested in software.  Will all of my existing software run on your operating system?  If not, do you intend to produce applications that are *BETTER* than what I'm using now? (If you're applications aren't better, then why should I bother to use them?)

Will you provide device drivers for all of my hardware, including my older hardware that works just fine but is no longer made?  If not, why should I switch to your operating system.

For the past 4 years I've been trying really hard to like Linux, but it suffers from the problems I've listed above.    As did BeOS and OS/2.

Mr. Haney
Monday, May 10, 2004

Does your OS do anything different from what Windows and UNIX do?  If not then the answer is probably that you will not make any money on it.  You do the same thing that these other ten (mature) choices do but "elegantly"?  And none of my software will run on it?

There needs to be something more or less unique, that can be done with your system that is impossible or impractical with existing systems and, coincidently, just as you are finishing, people need to want it.

name withheld out of cowardice
Monday, May 10, 2004

What is your OS going to do better than Windows or UNIX/Linux, or what will it have that neither of these has?

Should be working
Monday, May 10, 2004

elegance is a chimera. the only elegant operating systems are those nobody has ever wriitten a program for.

But fire away! I'm sure you can do better than IBM.

Stephen Jones
Monday, May 10, 2004

So it's true that you have dinner quite early in the Netherlands.
Keep it up. Who said compatibility was a 'killer' feature ? Joel, maybe. Check Joel's essays.

Pakter
Monday, May 10, 2004

"Those who don't understand UNIX are doomed to reinvent it, poorly." --Henry Spencer

Björn Roth
Monday, May 10, 2004

Yes, you can make money from it if you target a niche market.

Many so called programmers will tell you that the world doesn't need another OS or ask you the killer question: "Why should I use your OS when Linux is better and free?" Ignore them. These people were born to follow the crowd. Keep working on your project and believe in what you're building.

If you can't make money from it, you'll learn a lot of things. As a project manager, I'll certainly prefer hiring you instead of the "normal" guy with CS background that has some VB+SQL coding as experience (even if you'll going to write VB+SQL crap.)

GinG
Monday, May 10, 2004

If you really do have a OS under you pillow, I was say target a niche embedded market.  Say automatic tellers, voting systems, or slot machines.  There isn't much chance of breaking traditional clients or servers, but the market might have room for another embedded OS. 

christopher baus (www.baus.net)
Monday, May 10, 2004

Well, I'm back from dinner and delighted to see so many comments. Thanks for that.

First of all, I do understand UNIX, and I know it is a bit more thought-out than Windows. You're right there, Rob Mayoff. But when it comes to writing an app, I don't think it's easier on UNIX than on Windows. I did both. Maybe it's because of the IDE's I've used etc.

Oh, and thanks for pointing out that I shouldn't lose sight of reality. A good point, especially when it comes to making money someday. Yes, I've thought about "using" a niche market, like the music/sound/video market. Basically, it would be easy to develop just one app that is very good but specific. Maybe run the OS off a CD or something, like Knoppix does.

And I might have stressed the elegance a bit too much, but I really think that it's important if you want to win developers. So the problem here is that current OSses are too inconsistent, Just Me - but that's not really the problem of the user. Which is exactly my point. How far would you go to keep things compatible, both for the user and developer, instead of making something that is "Right". Is it worth making my own compiler (think Cocoa, .NET)?

And would you consider writing an app yourself for a system that is not widely adopted? Even if it's (nearly) free, small, AND developement costs were significantly lower? And what about specific apps, like the reservation system of a gym?

Embedded might be ok, but right now it's in 486+ asm. Oh, and consider this scheme: use a VM-like framework on Windows that runs programs written natively for the OS. Shouldn't be hard.

Thanks,

Jay.

Think Different(ly).
Monday, May 10, 2004

"but right now it's in 486+ asm"

Those who don't learn from history are doomed to repeat it!  An OS written in assembly is mostly a deadend.

Almost Anonymous
Monday, May 10, 2004

"An OS written in assembly is mostly a deadend. "

I know, but:
A.) Not the whole OS is ASM, only the kernel (< 30k binary), and some drivers. Besides, an OS is dealing with a LOT of machine things. Why do it in C when you can't port it directly anyway?
B.) It's a LOT more efficient.
C.) Good ASM isn't bad. It just requires comments almost every line, and it's the reason why I don't make the code public, or let anyone change it. I use common C flow elements, translated into ASM (almost) directly.

Thanks anyway,
Jay.

Think Different(ly).
Monday, May 10, 2004

If I had the talent that you obviously seem to have, I'd take the applications road rather than the framework path. Something in A/V processing, for example. More of a need and more likely to be adopted.

Presuming you do manage to make it popular and see some good money along the way, what would be usage? MP3 Players, Word Processors, Payroll Systems on the desktop, Web Servers, Streaming Audio Servers, Databases on the Server, Double Entry Book Keeping Systems on ATMs, Coffee Level monitors on Embedded Systems. We have all that and more. What is the point in creating an electronic Esperanto?

KayJay
Monday, May 10, 2004

> A.) Not the whole OS is ASM, only the kernel (< 30k binary), and some drivers. Besides, an OS is dealing with a LOT of machine things. Why do it in C when you can't port it directly anyway?

Could you expand on that? In a typical kernel, you need perhaps a few hundred lines of assembler to handle the CPU-specific 'machine things'.

> I use common C flow elements, translated into ASM (almost) directly.

Isn't that what a C compiler does?

Nevertheless, keep doing what you enjoy doing. It will make you a better developer even if it doesn't set the world on fire. On the other hand, if you want to make money, then you might want to look into the embedded market (where 486 is definitely not king!)

OyeS
Monday, May 10, 2004

"We have all that and more. What is the point in creating an electronic Esperanto?"

Do you think they didn't have it "all" when Windows, or Mac OS was started? Innovation is not just invention.
:-D

Think Different(ly).
Monday, May 10, 2004

OyeS:
You don't need assembler to do CPU-specific things. I mean, you can set a page table entry for an Intel CPU in C. But that won't work directly on a PowerPC, even though it might compile ok. And things like exception handling etc. are really inconvenient to do in C.

I'll shut up for a while, I'm starting to look like a weirdo. I have a life ;-)

Thanks,

Jay.

Think Different(ly).
Monday, May 10, 2004

IMVHO, both Windows and Mac have not changed their OS paradigm. Both, Mac with OS X, have a CLI, a Windowing System and Network Pipeline for inter-machine communication, using two-dimensional user interfaces. Yes, _how_ they handled that is a colossal industry called Closed Source Commercial Computer Operating Systems.

My point is that designing a 'new' OS which has the "why" & "what", the same as the many others, but is extremely better and by far the best when it comes to *how* the "what" is implemented and is more true to the "why", does not go beyond a polishing stage.

If one could find new uses for computers or even new computers, I'd be for it. Not new methods to for existant uses of computer on existant computers.

Of course, I'm just raving mad and outside my league. But, hey! that never stopped me. <g>

KayJay
Monday, May 10, 2004

> You don't need assembler to do CPU-specific things. I mean, you can set a page table entry for an Intel CPU in C. But that won't work directly on a PowerPC, even though it might compile ok. And things like exception handling etc. are really inconvenient to do in C.

That's correct but it's not a sound reason for writing in ASM versus C, just a reason for modularizing your OS so you can abstract such things to ease the porting process.

Exception handling is very convenient and easy to do in C. You just need a processor-specific layer to get you from ASM to C.

> I'll shut up for a while, I'm starting to look like a weirdo. I have a life ;-)
Nothing weird about writing your own OS. I'm sure many of of us here have done it for fun or even commercially on embedded systems.

But if you're talking about a system to replace (or sit along side) Windows or Unix then you need to address the 'why' part. Sure you're API may be very elegant, but that's probably because it doesn't do a whole lot just yet. You need to give a more compelling reason!

OyeS
Monday, May 10, 2004

Don't worry about whether you can make money with it.  Worry about the cost to your soul if you create less than your're capable of.  Keep at it.

But don't get caught up in drivers and compatability layers.  Write *applications* for it.  The world needs more operating systems, but the only test of whether yours is any good is how well it's suited to supporting applications programming.  That's true for all creation of practical items... not is the shovel pretty, or stain-resistant, but does it dig dirt well?

Take solace in Torvalds' experience.  I'll bet his friends mocked him: "think you're going to beat Microsoft with your little project Linus? Ha!"  The small minds are always the naysayers.  They'll convince you to stay in the dirt with them.  Nothing great was ever accomplished by reasonable men.

philip
Monday, May 10, 2004

> First of all, I do understand UNIX, and I know it is a bit more thought-out than Windows. You're right there, Rob Mayoff. But when it comes to writing an app, I don't think it's easier on UNIX than on Windows. I did both. Maybe it's because of the IDE's I've used etc.

You might not think that way if you try to implement a event driven I/O scheme.

Let's see..

There is select()
there is poll()
There is posix asyncio
Then there is sun's /dev/poll
There is BSD kqueue
Then there is real time signals
Then there is Linux /dev/epoll which is now sys_epoll().

Talk about convoluted.  The whole thing is a complete mess. I think Linux has it right now with sys_epoll(), but that is only in 2.6, and it may take you a month's worth of research to figure it all out.

christopher baus (www.baus.net)
Monday, May 10, 2004

I would not write software for it.  Why would I need a special OS to write a reservation system for a gym?  Why does a gym even need a reservation system?  Has the free market in Europe been so completely abandoned that you must now ration workouts?  Do you give priority to out of shape people?  Should I infer that those monsters you send to the "World's Strongest Man" competition are so rich they can afford their own gyms?

I've gotta go to Europe some day...it sounds fascinating.

name withheld out of cowardice
Monday, May 10, 2004

The compelling reason would be to do something radically different to the way OS's are designed today. I have no idea what, maybe have garbage collection built-in directly in the OS, or a new way of handling processes and threads that no one has thought of. Some entirely new paradigm.

But congratulations and keep up the good work! Torvalds once wrote something like 'I didn't get rich but having Linux on the resume is not that bad.'

robtwister
Monday, May 10, 2004

Dear name witheld out of cowardice,
                                                      Who apart from you mentioned gyms? And what has the fact that you may have to reserve something others may be using have to do with abandoning the free markets?

Stephen Jones
Monday, May 10, 2004

Torvalds didn't set out to write a new operating system. He set out to port an existing one to the PC because he wanted to play games written for mainframes.

Stephen Jones
Monday, May 10, 2004

<quote author="robtwister">
....maybe have garbage collection built-in directly in the OS, or a new way of handling processes and threads that no one has thought of. Some entirely new paradigm...
</quote>

No offence, but that is neither the context nor the intended scale of import for that word. Certainly not the tone or tenor of Kant's 'Paradigm Shift'!

Guess I'm just part of the 52% !

http://dictionary.reference.com/search?q=paradigm

KayJay
Monday, May 10, 2004

KayJay, I think you mean Kuhn.

I would suppose a new way of threading "that nobody has thought of" might qualify, or perhaps forma a starting point.

philip
Monday, May 10, 2004

Yeah, 'paradigm shift' would be more appropriate.

I shouldn't have mentioned some specific terms because it might limit the imagination. Currently we have files, processes, threads, kernel, drivers, messages...

First, forget about all that.

Now write an OS.

You would have neurons, signals, imprints, inferences... (I'm just making this up, but you get the point).

That I would buy. That could replace Windows, Unix and others 10 - 20 years from now.

robtwister
Monday, May 10, 2004

robtwister:
That's exactly the point that I originally tried to make. You're suggesting that people will buy something New and Better. But what if it's incompatible with everything else? Would you develop apps for it?

And forget what I said about a gym reservation system, Name WItheld. Yes, you should come visit Europe someday, but I meant the scenario in which some small company comes to you and asks if you could make some specialized app that is really simple but which they really need.

Thanks,

Jay.

Think Different(ly).
Monday, May 10, 2004

I wondered what caused name withheld to go ballistic about a gym reservation system. I've managed tof find where you mentioned it.

His main point is quite correct of course. Even if you're operating system was to Windows and Linux like Newtonian cosmology to Ptolemaic nobody would care less.

Stephen Jones
Monday, May 10, 2004

Kinda OT but I thought that you might be interested in the USENET post where Linus first introduced Linux to the world and one of the debates that followed it...

http://groups.google.com/groups?selm=1991Oct5.054106.4647%40klaava.Helsinki.FI

http://groups.google.com/groups?threadm=12595%40star.cs.vu.nl

r1ch
Monday, May 10, 2004

Operating systems should not be entered into for money.  It's just not there today because you are competing against some pretty heavyweight established folks.

Linus, after a long time, managed to make money off of Linux, mostly because he got some no-strings-attached stock from an IPO and is now a hot commodity in the product community that his project has created.

The problem is, if you want to charge money, you've lost.  All of the sudden, you have chicken-and-egg problems, because people aren't going to pay for the OS out of the goodness of their heart, they are going to pay for it if they see an advantage.  And without people using the OS, there's no audience for applications with the OS, so nobody will want to develop the applications that you would need to attract buyers of the OS.

Being a free OS that offers a lot of attractive features, even if it's not perfect, is why Linux is popular today.  Many folks made Unix-like operating systems for the x86 before Linux, but Linux was free.

Now, if you do the Linux route, which will most likely result in you wasting your time, but might end up working quite well for you, there are some cases where things have worked.  AtheOS and it's follow-on, Syllable, as well as SkyOS, have been able to develop a following as a non-Unix, non-Windows operating system.

The problem is that elegance isn't a selling point for an OS.  An OS only needs to be elegant enough to work.  Trying for elegance is a great road to failure.

Oh, and writing the kernel, even a microkernel, all in assembley is a very bad idea. 

Flamebait Sr.
Monday, May 10, 2004

Incidentally, I do really appreciate you writing an OS in Assembly. I could not appreciate its speed and simplicity until I tried out Menuet.

Good luck and all the very best.

KayJay
Tuesday, May 11, 2004

> It's all my very own work, in assembly

You are insane.

Just my opinion, of course.
Tuesday, May 11, 2004

Jay,

are you actually talking about a general purpose desktop/server OS for the x86 architecture? Maybe you should reconsider. That market is extremely crowded, with dozens of  players already established. "Elegance" wil buy you nothing. You'll need boatloads of drivers, heaps of API's, masses of tools and then maybe, if you are an order of magnitude better than the current crop, and can afford breaking into a market at commodity pricing, and then maybe, if you are lucky enough to catch the right wave in a market upheavel, you have a shot.

Find a good niche, where you can oneup the competition, and stick to it. That will already prove extremely difficult.

Just me (Sir to you)
Tuesday, May 11, 2004

The desktop sounds like a pretty good niche to me.

It's also one that's not so well served by the existing ancient players like Windows and Linux, unlike the markets for embedded, mobile, and servers.

philip
Tuesday, May 11, 2004

Interesting view Philip. Care to elaborate?

Just me (Sir to you)
Tuesday, May 11, 2004

hey philip,

why do u think market for embedded system is well served? i hate my fone (seriously). its a motorola with a totally screwed up interface. i hate my comp too but any new product in desktop niche is competing against 'market penetration' and not quality.

For any new product competing for quality is a lot easier.

Load up ur OS in mobile phones and make money. razor-razorblades!:D

rahul gupta
Tuesday, May 18, 2004

*  Recent Topics

*  Fog Creek Home