Hacker News new | comments | ask | show | jobs | submit login
Cosmos is an operating system “construction kit” (github.com)
139 points by CodinM 10 months ago | hide | past | web | favorite | 40 comments

The reason to have a "construction kit" for a given thing is that you are constructing a thing involving a huge amount of choices.

A programming language, an operating system and a database management system are all examples of complex, high level things involving such plethora of choices.

Programming languages have a variety of construction kits of various sorts, from Bison and Yacc to regular compilers and so-forth.

I hadn't heard of any equivalent kit for OSes or database system. Unfortunately, what's described gives the impression of producing a rudimentary system based on a few canned choices. I mean, fully producing an OS would involves generating calling conventions, device driver conventions, process convention, memory allocation methods, etc. (I'm far from an expert on this btw).

Sure, you can say "but all that's just done for you". It probably is done for you ... one particular way. But as far I know, the reason to produce a new OS is because you have some opinion how this stuff should work, usually because you're actually producing an OS to be use by some device and that device some needs and weirdness that needs to be taken into account.

Edit: Oh wait, just remembered, people are now creating "OSes" that are just app-containers intended to run AWS. If that's what you need, maybe this works.

OSKit developed in the University of Utah systems group was a...OS kit back in the mid-late 90s, I don’t think they were the first ones (would ya e to go back through some old OSDI/SOSP papers to be sure though). See http://www.cs.utah.edu/flux/oskit/.

Looks closer to what I'd imagine.

Check out Genode: https://genode.org/about/index

I think you have conflated the idea of an OS and kernel. A kernel generally handles calling conventions, device driver conventions, process conventions, memory allocation methods, etc. An OS just uses a kernel which has already decided on those conventions.

Personally I would argue the term "OS" is simply not that well defined, and the readme makes no attempt to clear that up which I think leads to confusion. What actually defines an OS vs. not an OS is a pretty blurry line, and more-over when someone talks about "OS development" 99.9% of the time they're talking about kernel development. So naturally calling something an "operating system kit" that lets you "create operating systems" makes you think of kernel development.

That said, I read the whole readme linked here, and not once does it actually explain what an 'operating system' is, so I personally think that's just a failure on their part in picking a name and explaining what exactly the intended use of their project is. If instead of using the term "operating system kit" they used the term "baremetal/kernel application SDK" (or something along those lines) I don't think anybody would be nearly as confused on what it is. But I'm not entirely sure that's a good name either because I'm really just not sure what you're supposed to use it for. I read the whole readme, but I'm still at a bit of a loss.

Don't get me wrong though, I still think it's a cool project, but mostly just for the code making up the 'Cosmos' kernel rather then the 'develop your own OS' aspect.

> Personally I would argue the term "OS" is simply not that well defined

An “operating system” is a combination of what the user sees, what developers see, and what devices see, I'd say.

If one wants to refer to the GUI, CLI, API, SDK, DDK or the kernel individually, just use those terms. :)

I have always thought of the kernel as being part of the OS, but maybe I'm wrong?

Some people think the kernel is the OS, some people think of the kernel as part of the OS, and apparently slimsag thinks of the kernel as something different than the OS.

They're just different naming conventions.

Other people have mentioned OSKit, but back in the day I also used oslib [1] to create a microkernel for my final engineering project.

[1] http://oslib.sourceforge.net/

Bit of a shame an "operating system construction kit" cannot be developed without using Windows.

Did not understand the shame part? A lot of Libraries come with exclusive support for Linux only. Are those shameful too?

"Shame", in this context, means "a regrettable or unfortunate situation".

If a library for "constructing operating systems" came out with exclusive support for Linux, yes that'd be unfortunate (read: "bit of a shame") too. Especially one with its own kernel and userspace.

Thanks for the clarification, Mr Snicket. :)

These sorts of comments are kind of rude. Nobody's saying it can't be developed without Windows; nothing's stopping you from building your own.

> Nobody's saying it can't be developed without Windows

The first sentence of the link: "Cosmos (C# Open Source Managed Operating System) is an operating system development kit which uses Visual Studio as its development environment."

At another point in the article: "Cosmos lets you create operating systems just as Visual Studio and C# normally let you create applications. Most users can write and boot their own operating system in just a few minutes, all using Visual Studio. Since milestone 5, Cosmos includes an integrated project type in Visual Studio and an integrated debugger. You can debug your operating system directly from Visual Studio using breakpoints."

And that's fine. Visual Studio is, as I've heard, an excellent IDE. But Visual Studio is indeed a Windows-only thing, for the foreseeable future.

In addition, elsewhere in the article it is mentioned about this project that the developers "want to make developing operating system as easy as developing Windows applications". That is clearly a bias towards the way of developing on Windows only.

And again, that's fine too.

But all this also agrees with my statement that it "cannot be developed without using Windows" in a practical sense. Sure, I could build my own, as you say, but that would be in conflict with the way the project's developers want it to work.

The project might be configured to build with Visual Studio but there are other C# compilers available. And Visual Studio is available for macOS in addition to Windows. https://www.visualstudio.com/vs/mac/

Except, it is nothing like win32 VS. This version is based on Xamarin (Microsoft follows horrible naming conventions)

> The first sentence of the link: "Cosmos (C# Open Source Managed Operating System) is an operating system development kit which uses Visual Studio as its development environment."

Sorry. Sloppy antecedent. It being an "operating system construction kit," not "it" being Cosmos.

Barring active dangers such as security malpractice it is absolutely, positively shitty to neg somebody's freely-made-available public contribution because you don't like the OS it runs on (and I don't; I don't have a Windows development environment myself!). They're doing it for free and they're not doing it for you. If you want it done your way, you do it; I'm sure they'd happily accept contributions that enabled it to run outside of VS on other OSes and the underlying runtimes that Cosmos uses seem to be available on Mac and Linux.

I think you're stretching my original comment a bit too far.

I didn't say the project is bad. I commented that the situation is a bit unfortunate. There's a difference between that and "negging somebody's contribution".

> If you want it done your way, you do it

To be clear, I've seen this argument made about lots of open source projects, and it's always discouraging to discourse. Sometimes that's intended, but I think in this case — as in most — it's merely neither here nor there. As you can see by my grandparent comment, I have nothing against the authors building their project however they like. In fact, if I demanded that they change the way it's done, that'd be in line with what you're accusing me of. I did no such thing.

> I'm sure they'd happily accept contributions that enabled it to run outside of VS

The entire point of my grandparent comment was to show how the article strongly suggests that's unlikely. And again, for the third time, that's absolutely fine. As fine as the unlikelihood of the Linux kernel allowing contributions in Rust, or even C++.

I'm not complaining. I'm just pointing out your misreading.

"Operating System Legos"

Ouch. Please change that to "Operating System LEGO" which is more correct.

Ref: https://twitter.com/LEGO_Group/status/502086477652959232

They can try all they want, but legos are pretty close to hitting "genericized trademark" status like bandaids and kleenex.

Only in the US. Call it “legos” anywhere else and you get funny looks.

I think he means more about the pluralistic than capitalisation. Outside the US (and officially) it is a mass noun so the plural of lego is lego. "Legos" sounds as grating as "sheeps".

One example of an active effort to prevent the genericization of a trademark was that of the Lego Company, which printed in manuals in the 1970s and 1980s a request to customers that they call the company's interlocking plastic building blocks "'Lego bricks', 'blocks' or 'toys', and not 'Legos'."

Part of the reason they are being so picky about use of the name is to try to keep it from going generic. Unfortunately for them, I play with legos, my kids play with legos, and all of their friends play with legos...

I'm not quite sure about English, but in Dutch, for single lego pieces we use the equivalent of "lego piece", or just "piece" when the context is clear, which pluralizes normally. If you say "I'm going to play with lego", the word "lego" is used in a more general, abstract sense, which has no plural at all.

You but you'd say "look at all that lego" not "look at all those legos" I assume?


Also, In the US: "Hand me that lego piece" Elsewhere: "Hand me that piece of lego"

https://cosmos.network/ The Internet of Blockchains called; they'd like their name back.

Cosmos is (was?) also the name of Microsoft's internal distributed database that they ran their version of map reduce in. I think Cosmos is a very common name to be used to name projects, it is probably used more than a few times a years as the name for a new project.

Cosmos - "the universe seen as a well-ordered whole"

Given the nature of the word, I it think fits the Cosmos Network pretty well, as blockchains are mostly about consensus around ordering. And Cosmos IBC provides a kind of partial-but-sufficient ordering around the Cosmos Hub.

But maybe it'll all run on a CosmosOS, and be integrated with the Cosmos react system.

This project has been going for over 10 years now.

Did COSMOS initially not use Mono? I seem to remember a toy OS kernel named either Cosmo or COSMOS on OSdever that was written in x86 ASM and C and had a shell, multitasking, paging memory manager, and a loader with RING0 and RING3 processes. This would have been ~2005-2006 ish. Was this it?

I've been watching Cosmos development since that time period and I think this is the same one you are thinking of. I swear ten years ago the TODO list was the same for this project.

I am amazed they stuck with it for so long then and how far it came along. I used them as a reference for my own homebrew x86 kernel back in the day.

My apologies.

Thanks for the support! :) I've made a submission for the Cosmos-SDK for disambiguation.

It wouldn't be hard to find a dozen different software packages called Cosmos. It's a fairly obvious name that basically cannot be claimed exclusively. It's at least also a web hosting management interface, and something that "provides an API for the orderly, harmonious, and complete management of DC/OS service packages".

There was a BeOS alike OS project called Cosmoe, but it is defunct. It was based on the same AtheOS code as SyllableOS, but tried to rework the interfaces tot he libraries to be more like the BeAPI. All ASM/C/C++ though, no managed code.

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact