
Cosmos is an operating system “construction kit” - CodinM
https://github.com/CosmosOS/Cosmos/wiki/Develop-Your-Own-Operating-System-in-C%23-or-VB.NET
======
joe_the_user
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.

~~~
slimsag
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.

~~~
DSMan195276
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.

~~~
Razengan
> _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. :)

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

~~~
eropple
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.

~~~
pritambaral
> 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.

~~~
rgovostes
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/](https://www.visualstudio.com/vs/mac/)

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

------
Jaruzel
"Operating System Legos"

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

Ref:
[https://twitter.com/LEGO_Group/status/502086477652959232](https://twitter.com/LEGO_Group/status/502086477652959232)

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

~~~
IshKebab
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".

~~~
gpvos
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.

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

~~~
gpvos
Indeed.

------
jonathanmarcus
[https://cosmos.network/](https://cosmos.network/) The Internet of Blockchains
called; they'd like their name back.

~~~
benjojo12
This project has been going for over 10 years now.

~~~
Hydraulix989
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?

~~~
sam0x17
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.

~~~
Hydraulix989
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.

