'Cosmo' — a C#-Based Operating System
Billly Gates writes "A new operating system called Cosmo has been developed, written entirely in C#. It shows the naysayers you can write a full OS kernel without C. So far, you need Visual Studio to compile and run it, as Mono is not supported. However, the source code can be compiled with the Express editions of Visual Studio. The project plans to add VB.NET support soon."
There haven't been any updates to the site in many months. Dead links left and right.
The project is called Cosmos.
What good is an open source OS if it requires me to purchase proprietary products to change or compile it? that's not freedom, that's just extension of Microsoft marketing campaign. And what about threat of Microsoft someday saying things built with their tools have Microsoft IP in them?
Requiring a Windows environment to compile a OS is like using dirty energy to produce clean energy.
#. It shows the naysayers you can write a full OS kernel without C
Congrats you showed the empty set something. Since nobody with the two brain cells required to know the word kernel would claim C is required for one.
Given we had then before C existed - GM-NAA I/O in 1954 would be the obvious "before C" one.
And we had non-C ones after C existed - LISP machines being the obvious example there.
This article is a failure on so many levels. It's about a dead project that sounds pointless in the first place, and they didn't even get the name right in the headline or summary.
It's a trifecta of fail all at once.
There's no -1 for "I don't get it."
How about Singularity, Microsoft's own attempt to write an OS in an extended dialect of C#? Is this aiming at similar goals in any way?
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
What happened to the "because I could" spirit of the true hacker?
We have stories of people building CPUs inside of game logic that is in itself running on a virtual machine that runs on top of a hardware abstraction layer that runs inside a kernel that might very well be running under the purview of a hypervisor. What is the point?
There isn't a point other than to wave your hand at the mountain of functional but completely useless triumph and say "I did that; I built that mountain".
If you have to ask why someone would waste their time on something like this, you miss the point of hackerdom. Turn in your badge at the door.
Women are like electronics: you don't know how damaged they are until you try to turn them on.
God forbid anyone just think it's neat for the sake of doing it. No, everyone has to go on an anti-Microsoft rant. Personally, I think it's kinda cool. I'd never use it for anything, but it's still cool that it was done. Instead of shitting on the developers just be happy they did something outside of the norm.
"Ubuntu" -- an African word, meaning "Slackware is too hard for me". - stolen from Dan C alt.os.linux.slackware
Actually, kind of. Singularity is (mostly) written in Sing#, which is an extension of C#.
Dilbert RSS feed
I think that's fair enough in any case. It's a hobby project, they should work on whatever appeals to them
However ....
Don't get me wrong - it's a cool piece of tech, if only in the sense of "whoever would have thought it possible?", But given the technology base, it seems unlikely to get the level of deployment and/or developer buy-in needed to lift it above the level of a toy OS.
Don't let THEM immanentize the Eschaton!
If you have looked at Singularity the past, you are welcome to develop on Cosmos however you must be careful not to use your knowledge of Singularity. Unless you were involved deeply into Singularity code this will likely not be a problem. If you are concerned about this, choose purposefully to develop in a different area of functionality in Cosmos.
http://cosmos.codeplex.com/wikipage?title=FAQ
And no, that's not a joke.
On second thought, let's not go to Camelot. It is a silly place.
According to this MS dev, they do (although not entirely):
"We use almost entirely C, C++, and C# for Windows. Some areas of code are hand tuned/hand written assembly."
Source: http://social.microsoft.com/Forums/en-US/windowshpcacademic/thread/65a1fe05-9c1d-48bf-bd40-148e6b3da9f1
This project would interest me (a little) if the assembly that the C# is compiled to were run on silicon that executed CIL as machine instructions. Even if the CIL implementation were microcode that invoked x86 instructions, or a Transmeta-type on the fly conversion to native instructions.
--
make install -not war
If you're going to replicate an existing project you're always going to be behind it, whether you follow an open or closed development model.
Now, Mono could (and does) add functionality MS doesn't offer, creating exactly the same situation in the opposite direction, assuming the Mono additions become desirable enough that MS would want to keep parity.
What happened to the "because I could" spirit of the true hacker?
Slashdot lost that a good few years back.
These days cool geek projects only get slammed for every non-real reason they can come up with against the true hacker spirit. Most of the sites users seem to be 20 years old or younger, so 'early computing' to them is a single core Pentium 2 with ram still measured in megabytes instead of just bytes, and processing power still measured in ghz or mhz above one.
Then again I've found this to be true on most sites that claim to cater to geeks and hackers as of late, forums just flooded with anti-geek and anti-hacker types.
Somehow slashdot attracts a lot of the anti-technology crowd too, the type who feel if their current method of doing something was 65% efficient, getting that up to 67% efficient is worthless because it doesn't solve every last problem, while the other half of the members scream how the rest of the world having problems is a perfectly legit reason to not allow hackers to hack and learn things.
It's very pathetic and sad, but there seems to be no escape from it.
I'm just glad to know when the IT bubble pops, those are the types who will be lost in this world with no skills left that matter, while the true hacker types will be the ones rebuilding everything
Ok, yes, there's the "because I can" motivation behind things like hanoimania, and if you don't think that's awesome, I don't know what you're doing on Slashdot.
But there is a more serious reason this would be useful, either in C# or .NET: A managed memory OS would likely be more secure and more stable than one written in, say, C. They're also playing up the idea of having it be entirely verified. It's also nice in that if apps are all bytecode, it should be transparently portable across hardware.
Such a beast would likely not be a replacement for current OSes for a long time, because of performance. I'd love to be proven wrong here. Still, even if it comes at a heavy performance penalty, I know there are a lot of places I would gladly take an 80% performance hit for better security and stability, especially on today's hardware. In fact, that's a reason to run web apps. At the very least, there are small apps like the ragemaker which are useful despite whatever imperceptible performance penalty there is, but which there is no way in hell I'm going to run outside of that sort of sandbox. And, similarly, there's no way in hell I could expect its author to release a Linux/ARM version, but if it runs in the browser, it runs on whatever platform/OS I want.
Don't thank God, thank a doctor!
no. why? what did it say?
rewriting history since 2109
Are you implying Windows is free now
Windows Home Premium (OEM version) is subsidized by trialware publishers, making it free as in beer to home users.
Free as in beer? Is that sort of like a free drink when you pay $50 to go to a show? I'll tell you a secret, when something is free with the purchase of something else, it's a bundled cost. You're still paying for it. Your computer is that much more expensive than it would be if there were no such thing as Windows and only free OS's.
...who said you couldn't write an OS in C#, or that you couldn't write one without C? Obviously C wasn't used to build the OS that C was built on. And if that someone said they couldn't do it was their reason for doing it, quick, someone tell them that there isn't an OS written in COBOL and that they can't paint your house with a toothbrush. And no, if I say I think it's a waste of your time to paint a house with a toothbrush, it isn't because it's a Microsoft toothbrush or Microsoft paint or that you're painting a Microsoft house, it's because it's a frickin' toothbrush. By the way, I love how the FAQ link takes you to a page that tells you they moved the FAQ instead of just taking you there. It reminds me of all those links wannabe web designers did in the style If you'd like to read about Obvious Anchor Target click here.
Making the world a better place, one psychotic episode at a time.
Sure, the project hasn't gone anywhere for a while, and C# isn't going to be most people's choice for systems programming without a whole lot of changes. But we need to face the fact that C is outdated.
A lot of the basic tradeoffs made in its design are based on assumptions that are no longer true. An example: C's need to have everything declared in the same functional unit before use and reliance on preprocessor #includes. In 1970, saving compiler effort and putting this burden on the programmer rather than having a more complex system for resolving symbols may have been an acceptable tradeoff; with modern machines it's ridiculous. Many other C design decisions have been shown to cause problems, confusions, and common security-problem-inducing bugs.
In the past 40 years, a lot of new ideas have emerged which make writing software simpler, faster, and better-organized; some ideas which make code safer or allow the compiler etc to do better optimization have emerged too. Parallelization/multithreading and concurrency have come to the forefront of programming problems, and languages can do better at taking it into account.
All this time, we've been writing almost all our most critical software with the same language K&R designed 40 years ago, or with something like C++ which inherits all its problems and none of its simplicity. Sure, people can point out a handful of examples of OSes built in other high-level programming languages back in the day before C had major uptake. But just about every machine out there today runs on a C-based stack.
The industry needs to find a new direction sometime; we can't procrastinate it forever. Very few people have made serious efforts to replace C at the OS level with something more modern. Even D, which is one of the very few newer languages which really try to be able to replace C, has no major OS effort. We really need to get OS developers and language&compiler designers on the same page, find a better standard for systems programming, and create a platform which isn't dependent on the C legacy. I, for one, am not about to laugh at any project which attempts to undertake this daunting task.
Correction: Even MS hasn't released a commercial OS written entirely in C#. I'm sure in MS development somewhere, there are some development OSs that are written partially or all in C# but none have made it as a sellable product yet that is written entirely in C#.
Well, there's spam egg sausage and spam, that's not got much spam in it.
does it run Linux?
No. Perhaps partly by design, but mostly because the Cosmos project has been dead for a year or so, while Linux is apparently alive and well. The Cosmos site linked in TFS has lots of dead links (check the screenshots page) and empty forms (milestones page), with the last news posted in early August 2010. Where do the submitters dredge up corpses like Cosmos from anyway?
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
So, first of all, a lot of the more enthusiastically open source types are much more likely to contribute to other projects which are less likely to be annihilated by patents, and whose direction isn't set by a proprietary competitor. After all, if people actually want to develop a cross-platform app, there are already plenty of ways to do so, and if they don't, Wine and Mono are more or less band-aids to the underlying problem.
It's also worth mentioning that while open source occasionally does produce something awesome out of whole cloth, the most significant open source projects today have corporate sponsorship of some sort. It's not that proprietary development is better, per se, but that funded development may have more and more active contributors than weekend warrior development.
From personal experience, here are the ways I've interacted with open source:
First, tons of little one-off hacks on my own that make me happy it was open, but that I'm unlikely to ever share with another living soul. For instance, before PCI Express, I had a card which was AGP 8x / AGP 3.0. The ATI drivers were detecting it as... less than that, but for whatever reason, running it in that slower mode didn't work at all. At the time, the kernel proper did not have AGP at all (this was pre-2.6). Fortunately, ATI had this open-source glue code, which included their AGP implementation. I cracked it open, commented out all the autodetection, and hardcoded AGP 3.0. It worked beautifully, but there's no way in hell I'm submitting that upstream, and I wouldn't know where to start in fixing it properly. (Well, I wouldn't have at the time -- I was 15 and in no way a C developer.)
Second, paid to work on open source projects as a consequence of actual work. I have a patch in Ruby on Rails which I wrote on-the-clock, and a fork of a Rails plugin. This actually works best when it's MIT-licensed -- I don't want to maintain Rails or even necessarily that plugin, when I can have someone else or an entire community do it for me, so there's an incentive to submit patches upstream. However, I'm not sharing my entire code-base under GPL or something.
I never was employed as a full-time open source developer, but there are people who do that. For example, I have to imagine Chromium is largely developed by Google employees, but it's still open-source, and it's worth it to open-source -- they get not just vulnerability reports, but actual patches, when they screw something up.
Don't thank God, thank a doctor!
What does C# provide that's compelling enough for open source people to disregard the source of the language and it's past rude and evil behavior?
If past rude and evil behavior of the corporation which spawned a language is a reason to avoid the language, WTF are you doing using C?
It's not speed since C covers that. It's not object oriented since C++/python/ruby cover those.
Well, not all at once, though. C++ has OO, but it's a pain to use. Ruby's OO is awesome, but the language is very slow compared to C++, or even to C#. So, it's a nice mix of non-painful OO and programming in general (with garbage collection, closures, etc) and decent performance.
It's also cross-platform in principle (if you stick to the subset that works in both Mono and .NET), and it runs in a multi-language VM which makes it easy to tie multiple languages together.
Java is really the only competitor there -- Parrot would in theory be better, but there aren't enough languages actively targeting it. And even in Java, I still have to choose. I remember writing a one-off program in JRuby (so it could use some Java libraries), and after several attempts to optimize it to where it would run in less than several days, I rewrote it wholesale in Java. It was more painful to write, but it ran in minutes instead of days. If C# is better to program in than Java, that's already a win for cases where I care about performance.
I mean, listen to yourself:
It's not regular expressions since it's hard to compete with Perl and nigh well impossible to beat Perl on this.
I'd argue Ruby does a decent job of ripping Perl off here, but regardless... Perl has regexes. It also has a really twisted OO system -- elegant in its own way, but I don't know why you'd choose that if you have alternatives. It has ugly syntax, even when you know what you're doing. Anti-patterns are the default -- like, say, ignoring errors unless you explicitly handle them.
The point is that C# is actually a decent language in a lot of these ways all at once. I don't know about you, but I use regexes, closures, objects, and complex enough data-structures that garbage collection would be nice -- so I use Ruby, but having that plus performance would also be nice.
Portability? Not going to beat Posix.
How about portability without distributing source? For that, you need something like LLVM, at least.
Don't get me wrong, I still use Ruby, Java, and C instead, and I've made a point of not learning C#. I've worked as a web developer, so I'm used to hopping between languages. But it would be nice to not have to do that.
Don't thank God, thank a doctor!
If you're trying to install a java library system-wide you're doing it wrong; yes having each program package its dependencies is frustratingly wasteful, but it makes sure behaviour is consistent and reproducible.
I am trolling
But C# is still based on C. It's kinda like Microsoft saying "Oh, we got rid of DOS a long time ago". DOS (much like C) never really disappeared, the powers that be just got better at hiding it.
Too bad Visual Studio 6 was the last VS before .NET.
Man who leaps off cliff jumps to conclusion.
Until he explains why he made whitespace into a control character, I refuse to accept him as anythying remotely divine.
If past rude and evil behavior of the corporation which spawned a language is a reason to avoid the language, WTF are you doing using C?
I'd argue that the reason isn't that the language was created by a rude and evil corporation, but that it is controlled by a rude and evil corporation.
AT&T may have created C, but it didn't control it in any meaningful way. Yeah, the standard for years was "whatever the AT&T compiler will compile", but AT&T as a company didn't care about it. They weren't allowed to sell software because of the monopoly agreement they had with the government. By the time they were allowed to sell it, the cat was already out of the bag, and they focused their efforts on the whole SysV vs. BSD war.
Microsoft views .NET as a tool for lock-in. They intentionally sabotaged Java on Windows for years while they played catchup - hence why Java never really caught on as a language for full applications. Java's no better, really - Sun tried the same thing, more or less.
I'm not saying that you shouldn't use C# or Java or whatever - I don't really care. Just bear in mind these languages were not designed with the goal of creating programs - they were designed to control programmers.
Those who can't do, teach. Those who can't teach either, do tech support.
Why bother when you have C,C++,Shell, perl, python, ruby, lisp,scheme, OCaml, Haskell, hell even Java although to be honest about how the Java community is run, why bother with Java either?
None of those (excepting Java, which you also disdain) is especially good for writing the kind of internal custom apps that any company of any size has hundreds of.
Which, maybe isn't an area you care about, but in my market there's way more good pay / good benefits / good working conditions work of that kind out there than there are people to do it.
Anything I've written this year, I could write in C or C++, for example. It wouldn't have been as good as fast (which is important, because a day of paying me costs more than all the Microsoft licenses my work will use), but it could be done. Business tends to care about good and fast a lot more than open standards or the assorted advantages (and there are advantages, I don't deny that) of open source.