Brendan
The extent of your plans is so large that I am really afraid of something like ongoing implementation until the end of life. But in 10 years knowledgeable developer can make a lot and such term is a serious claim for the final victory. And only one problem will always be with such people as you - when a feature is implemented you often will see a way to improve it and then start to re-implement everything again. Can you resist such a permanent black hole, that suck developer's time? If can't, then the time will be much more than 10 years. If can, then quality will be compromised.
Brendan wrote:There won't be libraries or any support for them. Instead there's "shared services" that run as separate processes.
The name is not important and you still have libraries, but with different names and call convention.
Brendan wrote:There won't be C or C++ either.
And will there be a universal bytecode? And a compiler from it for different machine languages? And compiler(s) from high level language(s) into the bytecode? A lot of work is expected, it is possible to spend 10 years developing the mentioned set of compilers if the quality target is high enough.
Brendan wrote:More importantly, the system uses "threads communicating via. asynchronous messages" for everything, which requires a different way of programming (e.g. state machines and event handlers, rather than procedural programming).
Here we see another area to study - the best programming paradigm. It also can take 10 or even more years. And it will never be studied completely just as the nature can not be studied to an unlimited depth. You make a very serious claim.
Brendan wrote:It will be very difficult to port anything (far more difficult than supporting my standard native graphics file format that all the legacy crud is seamlessly converted into).
Then the whole world of algorithms should be re-implemented for your OS from scratch. How many human-years it will take? For example, just a translation from C++ to Java (or backward) takes a lot of time, but your case is much harder.
Brendan wrote:Software developers will also have a name and a public key. Their name determines where all of the software they wrote goes in the file system. The public key is needed to verify their digital signature. If a software developer supplies malicious software their key will be revoked, their software won't pass the digital signature check anymore, and nothing they wrote can be executed.
Such developers just create new account and then keep making something bad.
Brendan wrote:There will also be strict guidelines for a variety of things (e.g. to ensure the file format standardisation process is followed, to ensure the "shared service" standardisation process is followed, etc). Anything that violates these strict guidelines is malicious software (e.g. maliciously trying to turn my OS into a hideous pile of steaming puke like existing OSs), and the software developer's key will be revoked.
Here I see the main point - your OS will be closely monitored by you to prevent anything that you dislike. It means the developer base will be decreased drastically for them to match your very harsh standards. I can only hope that such developers really exist (beside of you) and they will be able to find your OS, to understand it and to get it very seriously.
But anyway, if you will manage to implement the proposed plan, even as the only user of your OS, it will be something really impressive.
Brendan wrote:I'm planning to provide interactive tutorials for various things (installing/configuring the OS, my programming language and IDE, the standardisation processes, etc) and "exams". For software developers to register a "name and key" (and be able to publish software other people can execute) they'll have to pass several exams (those relevant for software development). All file formats and all "shared service" messaging protocols will use open standards (anyone can read the official specifications). For common executable types there will also be templates people can use to get started.
Exams are good for something widely adopted, but for a new OS... Well, the number of developers decreases again despite of (I hope) really good documentation.
Brendan wrote:It either works correctly (without people needing to become "advanced users" and without people needing colour management functionality) or it's not acceptable. The colour management functionality you see in existing OSs mostly only exists to work around design flaws.
Imagine a vendor of a printer and next imagine yourself as a buyer of the printer (because it's a really good printer), now what if the vendor will refuse to write a driver for your OS? I suppose your answer will be - I won't buy such printer. But it seems to me that no vendor at all will implement a driver for you and it means you will end with something like Windows, that is used for printing despite it's design flaws.
Brendan wrote:it's more important to avoid hassle for users and programmers, and providing the flexibility necessary to deal with hassle that should've been avoided is a mistake.
Avoidance can help, but sometime you have only one exit and no window, how it is possible to avoid such situation without an ability to see the future?
Brendan wrote:Another thing I'm aware of is that people won't switch from what they're already using to something new unless that "something new" has significant benefits (enough to justify the cost of switching - e.g. learning a new system, replacing applications, etc). For example, if you wanted people to switch from Windows to another OS that slightly better than Windows, then "slightly better" isn't enough incentive and it won't happen.
Yes, people like quality things. But quality cost is very high. May be you will find the time, required for such quality, even if most people never find enough time.
Brendan wrote:The third thing I'm aware of is that "recycling the status quo" makes it extremely difficult to provide significant benefits.
And I hope you are also aware of the fact that big promises fail much more often than we all want.
Brendan wrote:Basically; the primary goal is to provide significant benefits (like, "colour space management that just works without hassle"). Things like efficiency are important, but not as important.
Ok, just keep working, at least it is really possible to decrease some hassles, so your work can help even if there won't be an "no hassle" OS.