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/.
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.
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.
"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.
> 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/
> 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.
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.
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.
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.
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.
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.