Almost exactly three years ago, I wrote about why OSNews was no longer OSNews: the alternative operating system scene had died, and OSNews, too, had to go with the times and move towards reporting on a new wave of operating systems – mobile, and all the repercussions that the explosion of smartphones and tablets have caused. Still, I was wondering something today: why aren’t we seeing alternative operating systems on mobile?
First, let me make clear what I mean by alternative operating systems. I’m not talking about desktop Linux, FreeBSD, or NetBSD; those, and similar systems, are well-established, have lots of developers and users, and, in my view, can’t really be classified as ‘alternative’ by any stretch of the imagination. Development is steady, on-going, and they are not in danger of dying.
When I say ‘alternative’, I mean truly alternative (hobbyist might be a better term for some of these): SkyOS, AtheOS, Syllable, ReactOS, AROS, MorphOS, AmigaOS, TriangleOS, and god knows what else we’ve debated and ran these past 16 years since OSNews was founded. Aside from the Amiga-like operating systems, which see some modicum of development, virtually everything else has either died out, is on life support, or only sees the very occasional step forward. We’ve discussed this at length before, but suffice it to say, the vibrant alternative operating systems scene of the early 2000s has all but fizzled out.
I had high hopes that we’d see the mobile space play out differently than the PC world, but by now we have to face the facts and accept that it’s not happening. Android is dominating, and its dominance is only growing worldwide. iOS will do just fine with the remainder 10-20% worldwide market share. You can point to the US all you want, but even if all Americans bought iOS, they still only make up 5% of the world’s population. Face the music: mobile is following the PC world, and will settle on Android as the dominant player, and iOS raking in loads of money with the remainder share.
Lucky for us, we still have several large and established organisations working on alternatives to iOS and Android, providing us with interesting things to look forward to when our contracts are up and we get to pick a new phone – Windows Phone, BB10, and in the near future, FirefoxOS, Ubuntu, Tizen, and Sailfish. With the exception of possibly Sailfish, these are the desktop Linux and BSDs of mobile. They won’t go away any time soon, they’ll see steady development, but they’ll have to settle for scraps – a few percent market share, tops.
So far, the current mobile market looks very similar to the PC space, operating system-wise. However, I’ve been missing one thing. I’ve been missing what used to be OSNews’ bread and butter: alternative, sometimes hobbyist operating systems. One or a small group of incredibly talented and gifted programmers pulling off what I consider to be the grand slam of programming: writing a kernel, drivers, frameworks, and everything else that’s needed to breathe meaningful life into a computer.
At first glance, it would appear the mobile space is perfectly suited for developers of alternative operating systems. There are several very popular models of smartphones and tablets out there that are all exactly the same – quite a far cry from the ever-moving target that is the average x86 PC. This should make it easier for talented programmers to target a single or a few devices – say, a Nexus or Galaxy SII – and focus entirely on getting it working there.
It is true that several hardware aspects of modern mobile devices are locked, without open driver code or documentation. As problematic as that may be for a programmer, the fact of the matter is that that’s not very different from what developers had to deal with a decade ago. Both ATI and NVIDIA graphics cards were sealed silos, and many sound chips, wireless cards, and god knows what else were just as closed.
It could be that ARM – the x86 of the mobile world – is harder to target. I’m no developer, so I cannot make any definitive statements about this, but as I understand it, virtually every ARM SoC is unique, and there really isn’t a common target as exists for x86. While that may be true, every Nexus 4 is exactly the same, and could act as a perfect target. Even something as the Galaxy SII, while sporting multiple versions, is still relatively consistent compared to what we see in the PC world.
So, what is the cause? I personally think it has to do with how we perceive our smartphones and tablets. They are much more personal, and I think we are less open to messing with them than we were to messing with our PCs a decade ago. Most of us have only one modern smartphone, and we use it every day, so we can’t live with a hobbyist operating system where, say, 3G doesn’t work or WiFi disconnects every five seconds due to undocumented stuff in the chip. Android ROMs may sound like an exception, but they really aren’t; virtually all of them support your hardware fully.
With people unwilling to sacrifice their smartphone to play with alternative systems, it makes sense that fewer people are interested in developing these alternative systems. It is, perhaps, telling that Robert Szeleney, the programmer behind SkyOS, moved to developing mobile games. And that Wim Cools, the developer of TriangleOS, moved towards developing web applications for small businesses. Hard work that puts food on the table, sure, and as people get older priorities shift, but you would expect new people to step up to the plate and take over.
So far, this hasn’t happened. All we can hope for is that the mobile revolution is still young, and that we should give it some more time for a new, younger generation of gifted programmers to go for that grand slam.
I sincerely hope so.
Too busy working to get onto the desktop still :/
Poor Haiku.
(though that wouldn’t make a bad mobile OS + UI)
+1, I would love to see a BeOS/Haiku-based mobile/touch OS project!
Making a hobby OS for PC :
1- Learn x86 (cry a lot)
2- Use an assembler/compiler (experiment a lot)
3- Put on floppy disk, reboot, debug, crash
4- Repeat
5- Bonus, you can use a virtual machine
Making a hobby OS for smartphone :
1- Learn ARM (which version, ARMv4, v5, v6, v7, thumb ?)
2- Use a compiler, do not mess with eabi, forget assembler
3- What reference platform ? Device drivers someone ?
4- Fuuuuuck, what is the flash file structure ?
5- Fuck, need to s-off, root, recovery, flash the phone first
6- How do I debug this mess ? Crashed ! Bricked !
7- Abandon…
8- No, there is no valuable emulator, only Jtaged single boards computer that cost…
Kochise
Well now there’s also Raspberry Pi, with comfortably low costs…
zima,
“Well now there’s also Raspberry Pi, with comfortably low costs…”
While the raspberry pi is awesome for embedded tinkers, it’s not much use for a mobile OS. Maybe someone will come along with a “raspberry pi for mobile devices”. That would be fantastic!
Reminded me about one Symbian project… http://sourceforge.net/projects/wildducks/
I suppose we won’t have to wait long for something similar using Rpi (or other really low cost boards / kits)
It would be interesting to see how Haiku could be morphed into a mobile OS. Some of the underlying UI concepts appear to be adaptable to finger/touch interactions.
However, let’s not divert their limited resources nor saddle the development towards R1 with foreign stuff. Also, the current code base may not be as easily adaptable to ARM as the old BeOS code base (which started on the Hobbit, moved on to the PPC, and finally added X86).
One thing though. If the Microsoft Surface (X86 based) continues on the commercial path it appears to be currently heading for, it could become an ideal platform for a mobile oriented hobby OS. After having missed-out on the clearance of HP Touchpads, I’ll keep an eye open for the price drop on the Surfaces when it will come.
Just as a clarification here, we do in fact have ARM, PPC and x86-64 ports in various states of completion. It’s not so much a technical hurdle of the architecture as it is finding people motivated to work on it. Most of what there is of the ARM port was done by a GSoC student a few years ago who has mostly been busy with school since, and as such hasn’t really had a chance to touch it since.
Given the focus on the x86 desktop, most of the others haven’t really done much with it beyond ensuring that it continues to build with the various other ongoing changes.
besides that the whole premise is riddled with holes. The “moving target” of X86…WHA? What moving target? Hardware in X86land is so dang bog standard it ain’t even funny, in fact its gotten smaller than ever now that Nvidia was cut off by Intel.
As for why no explosion of mobile OSes…because the networks are owned by corporate, duh! With a PC there is a lot of jobs you can do you don’t need Internet at all and the Internet is really treated like dumb pipes for the most part. Mobile not only are you talking about something that is severely bandwidth constrained thanks to limited spectrum but you also have corporate trying to wring as many pennies out of it as possible. If you could put just any OS on there what is to keep you from tethering? What is gonna make you pay the carrier to un-cripple your phone?
There is too much money to be made and too few carriers to make alternative OSes in mobile viable, they just won’t allow it. Now tablets? I could see that, you can bypass the carriers completely with those, but phones? Not gonna happen, my guess is it’ll be Apple and Google with MSFT so far behind as to not be above margin for error on most charts.
Interesting perspective. Do you think T-Mobile’s new “everything” plans will change this? Our family now has 4 phones with unlimited voice, data, texts, and tethering for about $120 a month. Though I suspect they would object if a hobbyist OS accidentally blasted a few TB through our local tower…
There’s no standard hardware to target, for a start. Even if you can identify certain platforms that might qualify as “standard” they’re either locked down, or don’t have specifications or open drivers for various bits of their hardware. Where they do, the hardware is usually very specialised with no room to try different things: for example most mobile video hardware expects the OS to interface to it as some form of OpenGL ES. On top of that, a large part of a phones function is radio and managing the radio interface is hard, and boring.
The effort to reward ratio simply isn’t there.
Edited 2013-04-15 23:09 UTC
The only approach that worth and doesn’t waste so much time and resource is to use the linux kernel and reuse android drivers.
Why are you so bitter? Why do you not want progress beyond the 1970’s Unix systems? They were for main frames.
My point on young programmers was actually subtle. Linux is intimidating compared to a C64, so they have been Jedi mind tricked into thinking making a kernel is hard. I wrote a kernel and a compiler and a language by myself, just like Richie. You young kids think it’s not possible to write a compiler.
Why isn’t source code UTF with no legacy crap? Can you believe these systems were for 7-bit signed characters? We have all this crap from ASCII! Clean all that shit up. Rethink!!
Virtual memory is a joke! That was when you had a thousand users sharing 2 Meg of RAM!
Everything is different. My language is way better!
http://www.templeos.org/Wb/Doc/Differences.html
Edited 2013-04-16 09:17 UTC
Poke your nose out of your house, see the daylight, go watch a good movie, enjoy life. Your OS your delighted worked on for years is just par with your C64 memories.
Not everyone wants to feel crippled with hard to use OS command lines just to fucking browse the web or edit digital photo taken 2 minutes ago. Your OS is unusable in the vast majority of cases, Android is usable.
Make up your mind. Serious business is serious, homebrew developments stays in the niche.
Kochise
Really? Not that it’s even required, but seriously, is “firefox” really that difficult of a command to type? Or even “gimp”? People are effectively doing the same exact thing in Windows when they hit the Windows key and start typing… the only difference is the fully-automatic completion and drop-down menu. Same idea with Windows’ older “Run…” command. Same with Mac, whatever its version of this functionality is called. And nothing’s stopping you from using Tab in Bash either, if auto-completion is what you really want.
What are you going on about, anyway?
Try running firefox or the gimp in TempleOS, then come back to me…
Kochise
I’d add lack of standard Bios and resulting ease that device can be accidentally damaged through OS experimentation. That extends to both developers and potential users.
Wait, what about Windows Phone? Isn’t it a hobbyist OS?
why OSNews was no longer OSNews
Simple answer: Because now has become PantentNews.
Edited 2013-04-15 23:20 UTC
Several factors combine to cause the current situation.
As Thom explains it, smartphones are more personal, and some of us own quite unbrickable units. Smartphones and tablets are also productivity tools, so using alternative operating systems are often not a practical option.
Older programmers are probably hesitant to invest so much effort in something so high-risk as a mobile OS, when they have to think about their retirement and their “financial safety”. You have to get deals with the device manufacturers, the carriers and the developpers themselves. Also, most mobile developers I’ve met are quite pragmatic: bring food to the table is their objective when they make paid applications; that means picking established platforms to work on.
The last part, THE reason, in my opinion, why young developpers aren’t picking up is quite simple: technical skills, or the lack thereof. Being a student in computer science (first year, but I’ve had interest in computing since my dad had a Microspot 25SX/80 laptop that ran DOS and, my favorite, QBASIC), I can tell that even many computer science students have no prior experience in programming, mostly because they simply did not need to. In the early times of personal computing, some people had to enter the BASIC interpreter of their computer from a small monitor program that allowed to enter code in hexadecimal, or, if lucky, in assembler. Most of my peers had never installed an operating system on their own before our class on system administration two weeks ago. There is a knowledge gap between the “kids of the early personal computing era” and the “kids of today”, at the same age. My programming teacher wrote IRQ routines for his own games when he was 16. Nowadays, ask the average gamer what an IRQ is, and while some will know, they will be at least at 1.5 standard deviation from the average.
Today, most people press the power button and wait for a minute or so. Most of my peers had their first contact with computers that ran Windows 98. They used Office for school stuff, and played games that they bought. I consider myself lucky to have had access to a DOS laptop for several years, as this pushed me towards programming (one of my first programming successes was implementing load/save game functionality in SNAKE.BAS).
Today, the booting process of a PC (which, while having quirks, is quite standard, and low-risk, see below) is complicated enough that we spent three classes studying it, and most of my peers still don’t understand it. I know there are bright students out there (working on Haiku, among others; impressive job there!), but they are far from being common. Also, while writing a simple “OS” (terminal+keyboard, no user space) is at the hand of a persevering student, designing one that can be maintained over the long run takes experience (and quite frankly, talent), which few students have.
Also, one has to keep in mind the complexities of working with a closed platform. While Android has helped greatly in that regard, with a surprising number of phones and tablets having open source code, it remains problematic to develop for mobile hardware because of the lack of documentation. Also, while each phone model has somewhat close hardware (minor hardware revisions sometimes happen to correct bugs), there is a much greater platform diversity than in the PC world, because of the lack of standardization. There are several SoCs, and these chips are extremely configurable. There is no standard setup for GPIOs across multiple devices, the pin routings are done on a board per board basis (so that can change from one hardware revision to the other, or from a model in a series to another), power management is sometimes done by a separate chip that can vary even on the same model, etc. Moreover, as someone else pointed out, dealing with radios (especially Wifi and/or Bluetooth, cell modems are normally handled by a separate operating system on another CPU, except for Symbian devices) can get very complicated.
There is also the issue of risk: PCs are relatively low-risk, and (barring UEFI bugs), it is quite unlikely to brick one’s computer by testing one’s own hobby perating system; at worst you will wipe your hard drive, or the thing won’t work. Smartphones and tablets come with complicated pin routings that are not always reconfigured upon bootup (yes, I’m looking at you, dear Lenovo A107), leading to a bricked unit (hopefully recoverable, but not always). Or, if one configures power management incorrectly, it is possible to destroy the power charging circuits. There are many perils in mobile devices, so even young people with some experience and/or interest are wary and very prudent.
And finally, even when one has the technical skills, one has to have interest. And few people are interested in complicated stuff. That’s another major factor.
I think this combination of factors is the cause for the lack of alternative mobile operating systems.
Also, I think the lack of technical skills in modern computing-interested youth is one of the major causes of the decline of the alternative OS scene: no one is there to pick the project up after the original creator leaves because of real-life concerns. There is also the fact that for every successful project, a few hundred never gather steam, and for everyone of these, a few hundred don’t make it to the public (I know mine did not, however, I proved myself I was able to write a simple OS, and started having design ideas that are … interesting, to say the least).
ssys,
I sort of agree, however when we talk about people today having fewer skills, it’s important to realize that we’re talking in terms of percentages of programmers rather than absolute numbers. Today there are many more programmers able to do the low level grunt-work that went into OS dev back then, I’d honestly include myself. But we’re a much smaller percentage of the overall software engineering market because the pace of growth on high level development has far exceeded low level development.
If we ask why more indy OSes haven’t showed up on mobile, my own opinion is that Vanders is on the money. Not only do locked, proprietary, and non-standard devices impede efforts to actually build an indy OS, but they also *severely* impede our ability to distribute one as well. If I write a mobile OS, most of my friends will not be able to run it on their hardware without my writing new drivers for them. It’s not like it used to be with traditional computers (pc, commodore before that, etc) where anyone could share their creations freely via the sneaker-net (floppy disks). It doesn’t help at all that manufacturers are deliberately handicapping third party software.
Edited 2013-04-16 00:24 UTC
Also, I think most hackers are content to work on custom roms for their phone of choice. Which is a good thing, IMO. Why not build something that people can actually get some use out of, as opposed to a hobby OS that maybe 20 people would ever install. Even on PCs, I always considered them a waste of time, except for those who have an academic interest in them.
In other words, “please don’t even think of anything not Linux or we will do you violence.”
I think the biggest appeal of starting with the Linux kernel is that you, as an operating system designer, do not have to think much about what hardware you want your system to work with. They’ve done most of the homework for you already. You can instead focus on your user land experience or other areas.
If you also controlled the hardware on which your OS would run (such a closed system like the C64) then your job as an OS creator is a lot easier. Otherwise you have the very difficult job of writing/rewriting drivers for a lot of devices. The fact that these drivers have already been written and tested can save a LOT of time and frustration for potential users.
Besides, you could easily start with the Linux kernel and end up with an operating system that is completely unlike GNU/Linux.
Every so-often some idiot pipes up and says that the younger developers aren’t as good as the new ones … it is pretty much utter rubbish.
The fact of the matter is that newer developers are just more balanced socially and career focused.
Edited 2013-04-16 07:31 UTC
I agree, the argument about younger developers being less skilled is rubbish. And I’m an old one. 🙂
The developers marketplace has simply changed. It needs less low-level than before because the low-level stuffs was immature in the past, where skilled people where needed. It’s not the case anymore.
The application frameworks was immature (if even existant) too, they’re not anymore, quite the contrary.
They’re very large framework, well-documented, comes with many samples and so. No such thing in the past.
Younger developers are not less good than us old ones, their skills are just focused where there is demand, aka application & web service.
The low-level skilleds developers knows that’s true, simply because there is no more that need for their skilled, beside hobby OS… Even they have moved to such skills set, should be telling enough.
Add to that ever increasing technology change rate and economy world race, and it’s no wonder the focus is now on writing and selling as fast as possible applications, services, such stuffs.
Money is no more in low-level software.
Money is still in selling hardware and high-level small softwares and web services. Hence the app stores success and cloud services.
If the new generation spends more time doing social stuff how can they be just as good or even better?
I’m not trying to say the current generation aren’t any good, but programming in the past involved writing ALL your own code, no libraries or API’s, without Google and using Assembler or other less modern languages.
Today a lot of stuff is pre-made and by Googling you can easily link those pre-build blocks to make something that works.
The positive effect is that it’s relative easy to code something, but the negative is that when something doesn’t work the finger point starts. A bug in a library, wrong version of .NET, not the right DLL version, etc…
A lof of code of a program, maybe even most code, a computer actually runs isn’t written by the coder. (I suspect, I’m not a coder)
Today I changed our backup system so it logs results in to a database, which you can access via a web page. It involves Python, PHP and MySQL. I’m not an expert in any, worse I might not even qualify as a novice. But I did it, it works, thanks to Bing, copy/paste and some editing.
The older generation of computer programmers were shit compared to the even older generation who had to build their own transistors and circuits. They had no assembler, or even a keyboard and monitor.
I never said anyone was shit. My point is: doesn’t all the pre-build stuff limit the need for logical thinking and problem solving.
As it’s easy to create something that works one can assume a lot of rather dodgy coders have a coding job, because they have one eye in the land of the blind.
If one didn’t have all the pre-build code one could not create something that works without actually knowing how to code.
I’m not saying any generation is better or worse. The best coders ever may be alive and among us right now, but the ones that would have had no job 10-20 years ago can have one now by linking pre-build blocks of code.
No, I have to disagree. For example jQuery lets me not have to worry about how I implement the event handler cross browser (until IE9 it used a different method). I can simply concentrate on dealing with the event.
I think now that we have a better understanding of some of the patterns in which we write code now and software development is better understood.
Trust me those types stand out like sore thumb. We had one that thought development was copy and pasting code off the internet … he is no longer with us.
While you can do a lot without having to have a full conceptual understanding, in a decent organisation where people actually want to improve whatever they are developing … these people tend to be de-hired.
Edited 2013-04-16 14:07 UTC
Recently there was this guy who coded at a company, but actually outsourced his tasks to Chinese coders. He made quite a lot of money before they figured him out. He even attained guru status amongst his co-workers.
Anyway, those bab coders may stick out, but I´m pretty sure they find work somewhere.
We use an ERP product which works rather well on small databases, but gives performance problems on larger onces. After months of finger pointing and denial it turned out they did a crappy job on the database routines. To say they are not efficient is a serious understatement.
Maybe they aren´t bad coders, but they are surely at least mediocre.
There are certain environments where the less/in-capable are able to survive. I suggest reading a few random articles on thedailywtf.com, there is quite a lot of wisdom concerning the industry there.
TBH You have to ask yourself: Does it matter if the code isn’t good as long as it fulfils the requirements?
We can talk about maintainability, but realistically I have written 5 minute hacks that have stayed in production for longer than some of the really tidy code I have written.
There is no right answer, but it is certainly something to take stock of.
Edited 2013-04-16 18:41 UTC
As I mentioned earlier I “coded” a backup procedure in Python and extended it with logging the results to MySQL and reading them back using PHP.
This process involved 2 (real!) books, some web searching and editting copy/pastes. I understand exactly what the code does and it all works, but I have a bad feeling about it all because I wouldn’t be able to do this without a lot of help. I should be able to write some code using only my brain. And I’m not learning to, because I’m lazy and it works now anyway.
I’ll check out your link. As a sysadmin I encounter daily wtfs! Some people should not be allowed near a computer.
It the wrong attitude to take IMHO, and something I believed earlier on in my career.
I regularly for example use jQuery docs, I am constantly forgetting how the specifics of how something works, or when learning something I modify an example to suit my needs and refine it after discussing it with another colleague.
There are for example a lot of design patterns in software engineering, so we don’t have to write it from scratch.
Edited 2013-04-16 19:51 UTC
It’s rather depressing how quite often the utterly incapable manage to thrive.
If we are to believe the horror stories on thedailywtf then yes, yes it does matter. At least most of the time.
Soulbender,
“It’s rather depressing how quite often the utterly incapable manage to thrive.”
It’s called “management”
Most project managers couldn’t do the jobs of those under them. We do the work. they’re in command. All in all that’s not so bad in itself. What’s annoying is when they get most of the credit and rewords for our troubles while we nary get recognition at all…Bah!
True but that’s not really a problem. Not knowing all the details of the work of those under you does not mean you’re incapable.
What I was talking about was those incapable people who somehow manage to end up with a career as “rock star programmers/sysadmins” and consequently fucking it up for everyone else on the team, over and over.
I don’t mean to split hairs, but even in those days people who built their own circuits were generally known as electronics engineers and not programmers or software engineers. Any kind of software that they wrote usually was to provide minimal support needed to get their hardware work in a larger system. These kinds of software are usually referred to as firmware for this very reason.
If you think that firmware writers are good or capable programmers, then you should spend ample amount of time crufty BIOS code hell to see why a software engineering is a sorely needed discipline at that time.
Yes, but those electronics engineers probably had the same attitude to programmers as some of these older programmers have to today’s programmers. And those older programmers probably don’t think today’s programmers should be called the same thing.
Frameworks and Scripts give you the tools to ensure that the well known understood I needn’t spend a lot of time on and my brain power can be used for other things.
While a lot of bad coders can get away with Copy & Pasta coding, this has been about since the industry first came about.
I think there is an image of greybeards as if they are zen like martial artists from rural China.
Edited 2013-04-16 11:33 UTC
Thanks for this and your other answer!
Sorry, I should have made my main point clearer.
I am not saying that, overall, in their entire career, young developers are worse than the older ones.
I agree with many others that the priority shift is a major cause for the death of the alternative desktop and mobile OS scene.
I also agree that many of the developers of today are indeed more socially balanced (As one can guess, I’m not very much) and career focused (not a bad thing in itself, I too want food).
What I mean is that if you take a developer that grew in the C64 era at 16 years old, and a young developer from today at the same age, the one from the C64 era is probably going to have better technical skills from the need to have them to do whatever he wants on his C64. Nowadays, young people often acquire the technical skills to do such developement close to the time their priorities need to shift and they need to start handling life responsabilities, which means that a smaller percentage of the young developer base can actually work on an OS without much real life consequences.
Since modern OSes are considerably more complex than earlier ones (because users want more features), the amount of work needed on one has gone up faster than the number of developers that can (technical skills and no real life hurdles resulting from it), or could (are ready to learn technical skills and won’t have real life consequences).
Making a kernel is exactly the same amount of work it always was. Some things get easier with better hardware.
I made a 64-bit compiler. It was 20,000 lines of code. I had 16 registers that were 64-bit. It was way easier than it would have been with 16-bit segmented DOS.
Hardware now does DMA buffers. You don’t have to work hard on efficiency. Sloppy code is okay.
A kernel is easier today. The problem is so much divergent hardware. I guess the hardware is more compilicated — USB and PCI stuff. If you could just do one device, it wouldn’t be bad. USB requires UHCI, EHCI OHCI USB 2.0 USB 3.0 ICH9 ICH10 ICH11 and bunches of other variations of mice and keyboards. It’s way more compilccated than it needs to be… but that probably equals what you save on not being pressed for time.
DO NOT BE BRAINWASHED/JEDI MINDTRICKED! A kernel can be done by one person — 20,000 lines. A compiler can be done by one person — 20,000 lines. What cannot be done are drivers. What do you think 50 million lines consist of? Drivers.
Edited 2013-04-16 15:33 UTC
Sorry I just have to disagree. There is nothing inherit about breaking down a problem into a set of steps which can be changed into commands.
Being able to break problems down into algorithms isn’t inherent on working on ancient platforms.
In fact in some ways it is stifling. There is a chap on developers life that talks about how he is finding it difficult to think like newer developers.
http://thisdeveloperslife.com/post/2-0-7-dinosaurs
I have the same problem with web development, I am unwilling to do things a certain way because I am worried it won’t work on IE6 or IE7 … it not concious but it sits in the back of my mind.
Alternatively, you can think of that as having the experience to make more informed decisions.
“Why, when I was a young programmer we had to write the code in the snow with our pee, and a compiler was just a word for the pilot of the hovering dirigible that read the instructions and passed them to the ALU, which was another fellow with an abacus. They would wrap the results around a rock, and drop it on my house when the program would exit. We had to walk uphill…”
God, I hope I never become one of them horrible “graybeards” that does nothing but sit in an office and whine about the new generation of developers and/or technologies and lament how much better everything used to be.
“It is true that several hardware aspects of modern mobile devices are locked, without open driver code or documentation. As problematic as that may be for a programmer, the fact of the matter is that that’s not very different from what developers had to deal with a decade ago.”
I think it is very different. OS code from the 90s still works today on x86 because the hardware manufacturers sought to make IBM clones. There were no shortages of published unofficial hardware texts and resources such as ralph brown’s famous bios interrupt list for 3rd party developers to do everything microsoft could do and then some. If any manufacturer deviated too far from the defacto-standards, it wouldn’t just break indy software, it would break DOS/windows too, as well as thousands of commercial titles. So hardware manufacturers had a strong incentive in making their hardware inter-compatible, which indy devs in the past benefited from greatly.
Today, since the mobile hardware & OS is bundled and sold together, manufacturers don’t worry about playing nice with others. They’ve abandoned hardware standards. Many are not even standard across their own product lines. Hardware that is difficult to reuse could even be deliberate as with planned obsolescence: it encourages customers to continually buy new hardware instead of finding good ways to reuse the old hardware. The situation today may help hardware manufacturers sell more units, but it’s absolutely detrimental to indy software developers who have to allocate inordinate amounts of work in model specific hacking (on devices we don’t even own to test on ourselves). Most of us don’t have the economic means to distribute our own hardware, and even if we did, most of our friends would prefer to run our software on their existing devices rather than have to buy new hardware just to try our OS. So indy OS development is inevitably much less viable than it used to be.
Sadly, I think you are right. Although my own alternative OS never got off the ground for x86, I don’t have a strong interest to build an OS for mobile. It was easier to target the golden era x86 devices.. They have well understood and common HW implementations. I almost feel like the Linux kernel is at fault, if they had moved to GPLv3 maybe the HW wouldn’t be so opaque. However, since it is open enough for vendors to build upon, yet closed enough for vendors to ship, it leaves alternative “OS” design in the realm of custom ROMs.
However, I *am* a Linux kernel engineer by trade, so if I was hired to do an OS, I *would* just use the kernel I know and love. There isn’t a strong need to rebuild a kernel anymore. My ideas all played to niche markets, and if I had to market to general users, why would we ever use anything but the Linux kernel (or BSD kernels, for those that know it better)?
I personally think alternative OSes are pandering to remembrance of things past. There is a lot of fun work there, but we won’t move to mobile within five years with that mind set.
This exactly what’s wrong with the world of today. Everything is just Linux, Linux and oh by the way Linux.
No thinking outside the box anymore. Don’t make life harder than it already is, just use Linux kernel, right?
Except Android if quite out of the box Linux.
Edited 2013-04-16 10:13 UTC
kjmph,
I agree that there’s very little incentive for vendors to take risks with indy operating systems, and linux is obviously good enough for their needs.
It does disturb me a bit that linux has become such a disproportionate monopoly in the open source space though. This is partly because I like to see alternatives have a healthier share of the open source market, and partly because some of the technical decisions were unfortunate. Linux was designed to be a POSIX compliant OS, which it’s done an excellent job at, but I’m not such a fan of POSIX itself. I’d have preferred an OS with better interfaces to have moved ahead of the pack, something like plan 9. However in hindsight it’s pretty clear that linux gained converts from the sizable unix market owing to POSIX compatibility, so it’s not clear to me that anything with alternative interfaces would have had a real chance.
Edited 2013-04-16 05:30 UTC
People often don’t seem to appreciate just how important compatibility is. But it should be obvious that a new OS will struggle to catch on if it can’t actually do anything useful, and having access to existing applications makes a big difference.
My logic was legacy is Microsoft and Linux’s strength but weakness. Their code is really really awful over the years and the only way to beat them is to mercilessly break with the past. No 32-bit cruft.
You have no idea how hellish their code is. They are in an awful hell.
If you get greedy, you go to hell. I don’t care about other country support. I like desktops, not laptops. If you pick a tiny niche, you get heaven. If you try to capture the world, you get cursed.
long long i;
printf(“%ld”,1234L);
puts(T(“I don’t even\r\n”));
cout << 123 << 4 << “This is retarded” << endl;
—-
In my language. A string by itself is printF if followed by args.
for (i=0;i<100000;i++)
“%d\n”,i;
Edited 2013-04-17 01:05 UTC
Linux is not perfect, and mono-cultures are bad.
Eh? Who is “we”? Most hobbyist Operating Systems are just that: a hobby. You’re assigning commercial motives to something that isn’t commercial.
Actually a lot of it is because intel chips are backwards compatible back to the 8086. It was decision intel made years ago.
Edited 2013-04-16 23:11 UTC
Everybody like Linux, for better or worse. That’s where their skills are. Anything but Linux gets downvoted. The truth is there are a thousand alternative OSes but the press is censored. It’s the CIA.
Edited 2013-04-16 01:32 UTC
Linux is a kernel, so it’s no wonder people would choose an already made and reasonably well tested kernel. Another kernel no one talks about:
http://en.wikipedia.org/wiki/ITRON_project
For ITRON there is the well known eCos from Redhat:
http://ecos.sourceware.org/
People will do violence to anything not Linux. They’re really touchy.
The reason we don’t see more operating systems is… people look at Linux code and say, “Damn! Complicated!”
My generation had C64s. This generation has Linux. This generation knows nothing but html. My generation knew BASIC and 6502 asm.
My OS is like a C64.
My generation thought an operating system could be made by one person. My generation wrote compilers by themselves.
Just remember — Linux was written by one person when it existed in 1992.
Edited 2013-04-16 04:09 UTC
[i]My generation had PDP-10’s. This generation has C64’s. This generation knows nothing but BASIC and 6502 ASM. My generation knew raw op-codes on punch cards.[i]
😉
Punch cards?!? You young whippersnapper, real programmers enter their code in binary through the front panel toggle switches, and debug via patterns in the register lamps and nixie tubes!
Bah humbug, electrical luxuries. All we had was sector gears and number wheels.
small side note:
Linux, the first version of the operating system kernel was originally written by one person.
Gnu/Linux the fully functional operating system, was not written by one person, even the first version.
But really, its not because Linux is complicated that people don’t create other operating systems. Rather, its because Linux is so nicely written and flexible.
In order to create a completely new operating system, you have to have some goal that you are trying to accomplish.
Q:Need a better scheduler?
A:Linux can use multiple different schedulers. Just focus on the scheduler and continue on.
Q: Need a better filesystem?
A:Linux can use multiple different filesystems. Just focus on the file system and continue on.
Q: Need a lower footprint?
A:Linux can scale down to low powered hardware to a certain extent. If you can live with its foot print of a couple megs or so, your ok. ( Note this is where there actually is competition with operating systems still).
Q: Need a different gui interface?
A: Ok… Not really a part of an operating system, per se, but Linux has X, Wayland,Surface flinger and Mir. go ahead and add your own.
Q: Need a new hardware driver?
A: Just write the driver, and you’re done.
Q: Need something listed above, but don’t want to release the source code?
A: Use a *BSD.
There is very little need to create a completely new operating system, unless one is a purist of some kind and cares more about the architecture of his choosing than any real need of the operating system itself.
Edited 2013-04-16 12:45 UTC
Bill Shooter of Bul,
“There is very little need to create a completely new operating system, unless one is a purist of some kind and cares more about the architecture of his choosing than any real need of the operating system itself.”
I agree that the Linux kernel is extremely useful because all the driver work is already done. I would strongly reconsider basing any business on an indy kernel, as much as it might appeal to me, simply because I know linux has critical mass and staying power and the indy kernel does not. We often say “if it works, don’t fix it”.
However this philosophy, even with alot of truth behind it, can result in us becoming tethered to subpar architectural and interface choices which become increasingly difficult to re-factor as more drivers become dependant on them. The state of async IO in linux is not good for this reason. Posix AIO API on linux has to emulate AIO in userspace using blocking threads and marshal everything back into the AIO thread. Indy OS developers could obviously design better kernel AIO models, but as long as linux is good enough, then indy kernels will always have trouble reaching critical mass regardless of merit.
Good Point. There maybe other use cases where a new design would be better as well. I should have left that post a little more open ended.
The real point was that Linux is fairly open and flexible, which means that for a lot of new use cases they can be grafted into Linux instead of requiring a new OS.
Alternative means no Linux or Windows or OS X. There are some news about small alternative OSes, but it’s so boring, cause literally no one on the web gives a damn anymore.
Hobbyists left the “alternative OS scene”, as described here, because clients are boring and tedious. There’s an epic amount of wheels you have to reinvent in order to show off your chrome rims.
If you’re looking for the hobbyists, think about embedded communities like Arduino or Contiki. There’s also a lot of interesting work in clustering middleware, but that’s less accessible to hobbyists outside of academia.
On a higher level, the hobbyists are gone because personal computing has failed, and cloud computing has won the future.
If by “epic amount” you mean “a large amount” and by “cloud computing” you mean “the network”, then I’d begrudgingly agree whilst escorting you off my lawn.
The reason why hobby OSes don’t exist is simple. It is far too hard for hobbyists to develop a sytem that is sufficiently refined to satisfy modern users.
Gnome 3,Unity and Windows 8 are refined?
HA! Designed by Clowns for Clowns is more like it.
I wrote a 140,000 line alternative OS over the last ten years, including a compiler. In 1990, I was hired to work on Ticketmaster’s VAX operating system, so I like to call myself “professional” and not a hobbiest. I work full time. http://www.templeos.org
Maybe, you want me to port it to a mobile platform? Honestly, I detest small computers. I programmed these little 8-bit $1.50 microcontrollers that went on printer toner cartridges so they could be refilled. I don’t like wimpy computers. It’s interesting for a little while, but I prefer 64-bit 3.3Ghz 8-core computers! A phone computer is nasty with little screen and keyboards. Awful.
Unless you attach a usb or bluetooth keyboard and mouse and plug it into a big screen using hdmi.
Edited 2013-04-16 14:30 UTC
Too bad most portable systems (tablets, phones) don’t let you do that. If they did, they might be serious equipment that could actually be used to do and store and access real work. Ubuntu for portable computers is supposedly working on that… it’s one of the more interesting features. The problem will be, most likely, the fact that you will most likely be stuck with whatever operating system it came with, and whatever specs it came with.
The biggest reason I feel is Mobile environment is highly restrictive compared to desktop counterparts. Long back I was able to write a program (OS??) from scratch which was bootable and can take (very very) few keyboard commands. Though cannot be called as OS, the point is, it was easy to develop such programs in a desktop with a floppy disk. It is very difficult to experiment something like that with current devices due to non-standard based hardware/firmware etc.
I guess it’s about expectations.
Any operating system is expected to play MP3s, run Firefox, access USB flash drives, read ext?/FAT/NTFS, support all kinds of network/sound/video cards, provide 3D desktop effects, etc…
The days are over when it was normal to get an “empty” system and you wrote your own software.
Opting for the Linux kernel is logical, but also a bit boring and cheating I think.
Perhaps with the arrival of the Raspberry Pi and similar computers we’ll see some alternative operating systems that aren’t based on an existing kernel.
/rant on
Why is no one targeting mobile ARM-based devices with a hobby OS? Because it’s not worth it. Designers of these have done anything in their power to make it extremely cumbersome to write and use custom OSs, through a combination of…
-An ill-defined architecture, where even the design of the most basic debugging features is left to individual SoCs. Related is the fact that there is not even a standard way to boot an OS: for every new piece of hardware, you have to learn yet another new set of stupid boot-time manipulations*
-Stupid firmwares which can’t even charge a battery on their own and throw up ill-documented linux-targeted blobs when queried for a list of available hardware
-Hostile behaviour towards users who try to tamper with their OS by device manufacturers, including an obligation to use security exploits or wipe some user data (that cannot be easily backed up) in other to do so on many devices
-Hostile behaviour towards low-level developers by SoC manufacturers themselves, which will be extremely wary to open up their spec sheets, instead releasing linux-only binary drivers.
Your argument that we can just pick a relatively open piece of hardware like the Nexus devices and hack on it doesn’t hold, because developing an interesting hobby OS takes more time than such a device will last.
If you take an x86 computer and write code for it, as long as you stick with standard features (that can already take you pretty far before the need for device-specific drivers emerges), it will also run on x86 computers 10 years away from now. If you take an ARM-based phone and write code for it, it will die in about two years and you’ll be left with code that cannot be easily tweaked for another SoC, basically having to rewrite every low-level hardware code all over again.
ARM is a great architecture for embedded development. If what you are into is relatively simple software like that of cars, fridges, or creepy spider robots that walk on walls, you will enjoy the way the architecture lets SoC manufacturers do anything they want, leading to wide availability of cheap special-purpose development boards. But for the kind of general-purpose OS development that exists on x86 or PowerPC, anything ARM-based is, at this point, a nightmare.
* Some people will say that this is also true of x86 bioses. I disagree. There is a world of difference between staring at your screen during boot, holding the Esc/Fxx key pressed when you are told to, then following instructions, and randomly pressing various buttons with no feedback whatsoever in the hope that something useful will happen.
Besides, if I’m not misunderstood, it’s extremely difficult to boot an OS from an external media without making changes to the existing OS install on ARM. Or, in other words, you HAVE to break the factory-provided OS install in order to try out something new.
/rant off
Edited 2013-04-16 05:56 UTC
Kudo that, you should have a look upon the Dreamcast’s homebrew crowd which made wonders with this gaming console, having a very well understood and documented hardware, that is the same across the 7 seas. Which helps alot !
Kochise
Booting using uboot is pretty standard if you ask me.
Besides, if you don’t like the state of the current ARM platform, you can use Mips and x86 for hobby os development, there are a few mobile devices usin Mips and X86.
So, if I give you a bootable ARM binary and some chinese Android phone chosen at random, can you run that binary on it without extra documentation about the phone? You’re free to install u-boot to this end, if you can manage…
This is indeed possible, but then that wouldn’t really be developing for mobile devices at large and more like developing for a tiny niche within the huge world of mobile devices.
If you go this route, you could as well develop for one of the few well-documented ARM development boards, after attaching a touchscreen to it. But I don’t think that this is what Thom had in mind when he wrote this article.
Edited 2013-04-16 17:40 UTC
We love standards, ethical ones and hardware ones. We just don’t have them yet. So in the all-to-common, worst-case scenarios these days, corporate coders would seem to have the same effect as corporate lawyers. Its a language targeted at protecting a product by cloaking it in a privacy. Code obfuscation and legalese can be intentionally ill-defined. Quoting some of the inspiring phrases:
– have done anything in their power to make it extremely cumbersome
– you have to learn yet another new set…
– hostile behavior towards users… and developers… extremely wary to open up
– rewrite every low-level hardware code all over again
– anything ARM-based is, at this point, a nightmare.
– you HAVE to break the factory-provided…
Of course standard GPL-type licensing is a best-case secenario. Thanks.
“creepy spider robots that walk on walls”?
BTW, how is your OS going along?
I’ll bet you can find an emulator to develop a phone operating system.
For PC operating systems, you can run in a virtual machine. They are almost the same performance as native.
It’s really easy to try my OS in VMware or QEMU.
https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmw…
>qemu-system-x86_64 -m 500 -cdrom TempleOSCD.ISO -boot d
For PC operating systems, virtual machines take away the glory of an operating system, but actually provide a hardware abstraction layer that’s kinda nice. My operating system is practically guarenteed to work in VMware on everybody’s 64-bit machine. That’s not true of native hardware.
I’ve been working on several OSes about 10 years ago, even wrote my custom kernels, which served as a great experience gain for myself (1337 5k11lz ). It’s just not worth it anymore, because of the sheer complexity required to write even simple kernel and one has to pay his bills (not to mention that the day is only 24 hours minus sleep time) – if you get past the state of the basic kernel stuff, you’ll be killed by lack of drivers, which are almost impossible to write when you have no spec from the manufacturer. On PC you can boot OS from anything or simply launch Bochs/QEMU/etc. to get your code working. On embedded devices, you CAN’T. If you had to write your own firmware for the PC mobos, then it would be the same as writing boot code for the phone. Different phones require different configuration, because it’s more flexible to configure phone’s hardware e.g. using programmable voltage regulators. Many chips require very specific power sequencing to start – again, you need manufacturer’s spec. Hardware configuration is often tweaked and stored in EPROM memory, so you can account for e.g. sillicon bugs. You even have to configure memory controller – each device model has it’s own memory map. Even if you manage to boot your OS on one model of the phone and get all the hardware working, you’ll be soon facing the fact (after thousands of hours of writing drivers), that the phone will be obsolete and not available to buy in couple of years. To boot your OS on the other people’s gear, will make them risk bricking their stuff – if you paid $1000 for the phone, you don’t want to toss it in the cupboard after failed “experiments”, which might have had as well fried the hardware.
OS development serves as a great learning tool, though. Many of the CS students, which are “spewed” by today’s schools, have very poor engineering skills (I estimate, based on people I’ve met, that – per class – there are 0-2 h4x0rs (who have learnt the stuff on their own, anyway), 1-5 skilled people and the rest are “film dummies”, just to fill the space). They can’t understand the concept of the pointer, let alone develop anything more complex than hello world app (their brains are fried when they have to develop an algorithm for something). Back in the DOS or C64/Amiga/etc. days people had to have some experience in how the operating system or computer works to get anything done. I’ve noticed that many of the people who’ve been forced to learn these things are the best paid and the most skilled experts today and can learn any technology that is thrown at them. During development of my OS I’ve learnt at lot about the electronics, hardware design, FPGAs, low level programming, concurrent programming, thread safety, programming languages, writing compilers, writing drivers and many other things.
I think that the most of people, who have developed their own kernel back in the day, now have other jobs (+ children), they have to pay their bills and buy their own food, which resulted in a priority shift.
Edited 2013-04-16 06:29 UTC
agentj,
“I think that the most of people, who have developed their own kernel back in the day, now have other jobs (+ children), they have to pay their bills and buy their own food, which resulted in a priority shift.”
This applies to me as well. I’ve moved on to web stuff because the low level type of work that has always interested me the most has very little demand for it anymore. I’d happily go back to working on bare metal projects, but I cannot afford to do it for free. Money and bills are a very real limiting factor. If anyone has low level work to do and will pay, please let me know!
You can try to find a job at a game development company. A lot of console programming is bare metal.
twitterfire,
“You can try to find a job at a game development company. A lot of console programming is bare metal.”
You know what, I am interested in that. I did make some low level hardware 3d graphic demos in DOS many years ago, but I didn’t manage to land a gaming industry job as younger grad. There’s no harm in applying today, these days my family keeps me geographically tied down (edit: suffolk ny usa).
Do you know of any game dev studios that consider telecommuters? I’ve considered doing independent mobile game development, but the indy mobile devs I know make a pittance and so I am weary following in their footsteps.
Edited 2013-04-16 15:09 UTC
I don’t know US situation, as I live in EU. However, if you enjoy games and game programming and bare metal programming, most PS3 and Xbox 360 stuff is low level and direct-to-metal.
I wonder, does that mean we’ll see a resurgence of hobby OS projects when people capable of doing them will start hitting retirement age? :p
zima,
“I wonder, does that mean we’ll see a resurgence of hobby OS projects when people capable of doing them will start hitting retirement age? :p”
Interesting observation… it’s hard to say. On an NPR program I heard a doctor claim that 50% of the public at 65 begin to show signs of being senile.
Sorry this is just elitism.
I find hacker types are notoriously bad at delivering a working product.
Though not quite a mobile computer, the Pi has been used for at least one “alternative” OS: RISC OS.
With its relatively low footprint, RISC OS would make a decent mobile OS, though the GUI would have to be rewritten from the keyboard/mouse-centric desktop to a multitouch GUI.
As for phone OSs: A barrier is that telephony code is complicated and needs to pass strict standards. So it is more likely that alternative-OS mobile devices will target WiFi instead of telephony.
I think a lot of it is a cultural shift. Previously we believed it was possible for a little startup company to come along and compete with the big boys on the market (IBM mainly)
Acorn, Sinclair, APPLE!, MICROSOFT!!
An OS takes a large financial investment for a very small hope of return. WebOS, a wonderful mobile OS, even with Palm leading it couldnt break the market. HP bought it and it couldnt either.
I couldnt write a webOS, let alone give it the backing these companies did. I CAN however write a little phone app and make a few quid on the side..
-I am porting CM10 and 10.1 (JB 4.1 and 4.2) to a phone. porting existing operating systems might be hard enough, writing operating systems from scratch is orders of magnitude harder
-my CM10 ports will have far more users than if I start an alternative/hobby operating system myself; as a programmer, I tend to write software for people to use, not just for myself or for the sake of it
-reverse engineering mobile socs and chips is not worthing, in 1 year every soc will be oobsolete and a new one will take its place, mobile hardware is too much a moving target
-I make a distinction between alternative oses like Haiku, Syllable, ReactOS, Skyos and hobbist operating systems which are in general of lesser quality, tend to be unfinished, written to learn os development or just to try out various things and not meant to be usable one day
-when the likes of Haiku, ReactOS, Syllable, Skyos, AtheOS were planned, the devs didn’t see them as hobbist, instead they thought and hoped that their operating systems might take of and people will use them
-alternative operating systems for desktop failed not only because lack of quality due to lack of manpower, but they also died because lack of critical mass and lack of apps
-Ubuntu, Sailfish, FirefoxOS will probably fail
-potential developers already know from experience what happened to “alternative” oses on other platforms, they know they can’t succeed, their oses would never take off, so why waste their time and not do something productive instead?
-there might appear pure hobbist oses for mobile, like there are some for PC but those will be of even lower quality than “alternative” oses
-there might be some research oses and/or kernels in the future
I think one or two of them will succeed, for small values of “succeed”.
I doubt FirefoxOS will grow to more than a few percent of the western markets (at best), but it may grow to a sizable fraction of emerging markets by being simple for first-timers, buoyed by the well-known Firefox brand, and devices running it are at the starting gate today. It’s the obvious low-end play.
Ubuntu has an opening to be the third player at the high end simply because it uses the Android kernel as-is without the Google infrastructure (“Anything but Android” from Samsung and the dwarves is their best shot). It helps to have the long-term independent financial backing of an entrepreneur with solid industry connections, of course, and the “one device, many markets” strategy is kinda cool, too.
Why not WP, iOS, BB, Sailfish, webOS, or an upstart? The Windows desktop monoculture nightmare is too fresh and Microsoft too dysfunctional to grow beyond a few percent, I think, and iOS and BB are successful but forever single-vendor. I like both Sailfish and webOS, but I suspect their time has passed and I don’t see a compelling reason for a vendor to choose one of them over FirefoxOS and Ubuntu. And an upstart would probably need to also invent a new device sub-category, as Apple did with non-stylus slab phones, to get a toe hold.
Just my opinions. Of course, I fully expected MeeGo to challenge Android back in the day. *shrugs*
What I find interesting actually is the lack of projects in this area coming from universities.
There used to be some amazing experimental projects (Plan 9, Oberon, Squeak) from universities and labs and I’m not aware of such experiments done on mobile devices.
It’s also interesting to note that when some consistent hardware (arduino, Raspberry Pi) appears, it kind of encourages innovation more.
Someone just went full-on Linux advertisement. Excuse my SPAM.
Why don’t you all try my operating system in VMware? Just spend a couple hours. You visit this site, so you have an interest in operating systems. You owe it to yourself. http://www.templeos.org
You know how there are imparitive and functional programmers? A well educated person informs himself. Spend a couple hours with TempleOS. Why wouldn’t you?
I have tried Linux and use Windows. At least I tried Linux. Personally, I get annoyed with file permissions. I have no use for that. I tried recursively chmod’ing to 777 on all files. Didn’t work.
Did a C64 have permissions? It’s just for me, not a mainframe for a hundred people.
People seem to love Git, for source code control. Maybe, I can get them to file my taxes — crazy paperwork lovers.
Edited 2013-04-16 13:00 UTC
File permissions are here for a reason : business stuff. TempleOS for your own entertainment. Two different targets. Why asking to remove file permissions ? Because YOU don’t need them ? How selfish… Your God should have taught you with humility and freedom of will.
Kochise
I don’t know why you keep mentioning the C64. It was a great machine in the eighties, and like many, I learned to program on one.
But the eighties were a long time ago now. The world has moved on, and such a system really isn’t useful for very much anymore.
You’re in denial if you think Linux is better than Windows. The market is always right and only losers don’t agree.
Linux is a 1970’s mainframe operating system who’s pathetic cultists have been deluded thinking they will conquer the desktop world. Normal people don’t want permissions. Embrace your nerdinest and leave normal people alone.
My operating system is not deluded. It’s a secondary operating system for fun programming. I thought Linux would be fun because it was open source. The source is awful. No Linux people actually look at it — it’s so awful. It’s a failed promise.
My operating system is for people who really care about open source, not freeloader scumbags who care about $200. Who the heck cares about $200 or $300 dollars for an operating system? Mine’s free, but it’s just stupid to care about $300 dollars.
Edited 2013-04-17 02:27 UTC
I actually think that regular people want permissions, they just don’t want to bother with them.
But I agree that Linux & friends taking over the desktop was a far fetched idea considering how badly designed it was for the purpose.
Maybe if all those people had put all that effort effort into something like Haiku things would look different today.
Paperwork is a funny thing. It’s satisfying on some level. The trend in programming is to increase the paperwork — more type checking, security, namespaces and source control. Do you see the concept — more bureaucracy to get the same thing done. You no longer do one thing to get something done, you do five things to get something done. Admitedly, some of this is necessary for being a professional programmer, today. I thought it might be nice to create a recreational environment and go the extreme of anti-paperwork, to make it more fun and productive and simpler for beginners.
Getter and Setter functions, for example, can be nice, admitedly, but to stay true to my principles, I did everything directly. I got the notion of minimal layers of functional depth — minimal abstraction — put you almost right on the hardware, if possible. BASIC on a C64 poked hardware ports. You get intimitaly knowledgeable and it’s satisfying, in another way.
Edited 2013-04-16 14:22 UTC
Wow, has it really been 3 years already?
Initially thought i’d stop reading once you announced a change of scope. But the articles/editorials were still interesting afterwards.
So I still read your website.
Thank you for your continued efforts.
Name spaces are not that annoying, but I pity kids with yet another thing to understand.
Everybody obsesses on scaling issues and doesn’t want hyperlinear scaling. If a 140,000 line operating system grew to 15Million, there would be scaling issues.
I had the brilliant idea that hyperlinear scaling applies both ways! If you can make an application only 1000 lines, you can rightfully use short variables, even global variables.
It makes me happy to have Linus on the side of reason in the liberal vs conservative debate — he likes C. I’m okay with C++. The biggest practical problem with C++ is grep on function names.
You can Grep FileRead()
You cannot grep File::Read()!
I love to groom my code with global string find and replace. That can’t be good with source control!
I saw someone define “liberal” and “conservative” as it applies to programmers. I think academic is liberal and industry is conservative. This person said sensible things, with one major exception. He classified assembly language as liberal. What? His logic was that there are no rules.
You guys have been drinking the Linux cool aid. I got soda!
I took 5 assembly language courses in school — geared to developing embedded hardware software, an operating system course and a compiler course and a computer graphics course.
In my embedded software course we had 2 week projects and we were graded on a curve on how short they were. The last project was a scheduler, to do multitasking on a little 8-bit motorola microcontroller.
A scheduler just saves registers, restores registers and schedules a timer to interrupt at a certain time. Tasks ask to run at a certain time. You manage that, its not hard.
What is an operating system, but a scheduler?
I did a compiler. Linus learned people won’t call a kernel an operating system.
They do exist here are a few:
SHR – http://shr-project.org/trac
Nemo Mobile – https://wiki.merproject.org/wiki/Nemo
QTMoko – http://qtmoko.sourceforge.net/
The problem is by and large the hardware is much less standardized, much less open and there is much less interest.
Those are all Linux distributions, not alternative operating systems.
The problem is that if you get any of the smartphone platforms, most are running some flavor of UNIX. iOS? Darwin/BSD. Android? Forked Linux with WAIT_LOCKs, recently merged back. Blackberry? QNX.
If you want to invent a NON-POSIX OS, you won’t have an app base. If you want to do POSIX, why will yours be better than the existing alternatives?
You can install existing linux distos for ARM right not on rooted phones and tablets.
So the problem with doing a DIY OS is that it would be a dead-end. It might be a neat hack – there are many. But if you want to actually use it for something, the infrastructure will be harder. For example, how do you do a bluetooth and wifi stack?
There is now the Raspberry Pi – that might spark some interest and development. It is cheaper, the hardware and software are open. Something might happen there.
You guys are like dogs chasing your tails running in circles afraid to go out of the house.
“If we make a kernel, there won’t be apps. Why make a kernel, a kernel exists. Why make drivers, drivers exist?”
Actually, you are CIA Linux cultists drinking cool-aid and saying stupid Jedi mind tricks.
One man can make a 20,000 line kernel.
One man can make a 20,000 line compiler.
It’s done! Try it in VMware http://www.templeos.org
God said 640×480. God will talk to you. Try it.
AfterEgypt is a God oracle application.
“Please ! Please! People be reasonable. DO NOT MAKE A KERNEL. Why make a kernel?”
Edited 2013-04-16 17:31 UTC
I learned a lesson. I was going to do filesystem metadata, perhaps critic star ratings on files, or something. I put FAT32 support in there. Then, I lost enthusiasm for file system meta data because I could not copy it onto my FAT partition, could I? I would have to make a file or something.
The lesson is — sever all ties to other operating systems.
You’re gonna use gcc? That is a huge trojen horse. It’s going to make you POSIX. It’s means you file format will be elf. It means your source code will be ASCII. Suddenly, it looks exactly like Linux!
I redesigned absolutely everything. There is no other sane choice. When Unix was invented, they made ASCII and C. The C64 did not use ASCII. I use 8-bit unsigned IBM PC codes plus graphics.
A related bit of wisdom. If you have a hardware like a mouse, some have three button. If you pass that on to your API for your users… could someone make a game requiring a 3 button mouse? You’ve just clusterf–ked all games. They have to split code and interfaces.
Multiply different hardware by sound and graphics and everything and its a total clusterf–k of divergent branches of software for all the applications made by all users.
What good is 4 speakers? What good is particle effects or a physics engine in one graphics card.
If you have a physics engine in some graphics card… it’s completely useless. Nobody in their right mind is going to do custom code for some stupid piece of hardware!
Edited 2013-04-16 18:14 UTC
omg Thom, YOU MISS best time in computer history… YOU have only scraps
http://sparemint.org/mailinglist/Mailing-Lists/MiNT-List.index.html
Flashing a custom ROM can already be obscure and risky enough (even for some otherwise tinkerers) to even consider trying a hobby OS where you’ll be missing 99% of your phone’s functionality.
PCs are a whole different thing: you can dual-boot or run VMs, and at worst you know you can just restore an image (or reinstall from scratch) and get everything working again. There’s no risk involved.
Even if I had the knowledge and desire to build a hobby phone OS I’d probably pass just out of lack of interest in bricking my €400 device (let alone all the other points risen about not being able to target several different devices and my pet project becoming obsolete in less than 2 years… that is, probably before I’d even have something barely interesting working already).
All the trouble kills a lot of the potential fun.
And then there’s the fact that smartphones and tablets are primarily consumption devices, and hence a hobby OS that doesn’t readily provide consumption capabilities becomes highly unattractive for most (if not all) of the potential target audience.
Would I want to try an OS that doesn’t make or receive calls, connect to any network, that runs pretty much no applications and whose install process wipes all my data and has a reasonable chance of bricking my phone? Well, heck no.
Edited 2013-04-16 22:54 UTC
The inability to dual-boot and potential for ‘bricking’ make the entire concept futile.
arrived late. did anyone inform thom that there are more android distros than gnu/linux ones?
He isn’t asking about Android distros. He’s asking about alternative operating systems.
so now we’re back to slashdot 2001 debating what an operating system is.
“so now we’re back to slashdot 2001 debating what an operating system is.”
We *could* debate semantics like whether “hobbyist mobile operating systems” should include android forks or not, but that’s kind of missing Thom’s point. He asks why there are no alternative hobby operating systems (not just forks) in the mobile realm like there were in the desktop realm.
Too little credit has been given to BIOS, which was the backbone of early OS’s. With that as a starter, a DOS could be written as a term paper. New OS development, if any, will have it’s roots in classroom assignments, which means starting from somewhere well past the CPU. If you can consider Linux to be the new “BIOS” then give credit to those who build an OS on top of it.