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.
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.
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. :)
They're just different naming conventions.
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.
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.
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 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.
Ouch. Please change that to "Operating System LEGO" which is more correct.
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...
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.