Sonntag, 26. Januar 2025
Thoughts on Stargate Program
Sonntag, 23. August 2020
Time of car analogies to computers are over, let compare IT to cars
It is one of the earliest habits in the IT industry to do car analogies in order to explain some computer characteristics or behaviour. Probably because cars were more widespread that computers and easier to understand what is happening inside a car than inside a computer. One of the earliest mems was the „If cars were like computers“. But now that cars are becoming more and more similar to a smartphone on wheels, maybe it would be interesting to do the reverse and try to predict the development of car industry in analogy to computer industry.
When asked which car manufacturer resembles a computer model, the answer would be undoubtedly that Tesla is resembling Apple. It is the same type of hype, fanboyism, Teslas CEO Musk is at least as eccentric and visionary as Apples former CEO Steve Jobs and Tesla’s cars are different than the rest of the industry for good and for bad. Similarities are also regarding the target group. Both Tesla and Apple have a limited market share and they are fine with it since they are targeting middle class with sufficient money to buy something pricy, but not exclusive, just enough to impress the neighbours and colleagues. So a Think Different, but not too much, using Linux or cars running on hydrogen would be too nerdy and inconvenient. Both companies are also masters in platform economy, Apple has App store and iTunes store, while Tesla has SuperCharger stations and Musk is also thinking loud about an App Store just for Tesla users. The stock prices kind of confirm that Tesla is not seen by investors as an automotive company, but its valuation is more closer to the platform companies like Apple, Facebook, Microsoft and Amazon.
So while the situation with Tesla is more or less clear, what does it mean for the rest of car maker industry? Anology with IT teaches us, that usually there are two systems competing, be is vi vs. Emacs, Amiga vs. Atari, Windows vs. MacOS, Android vs. iPhone. Where is the biggest competitor to Tesla, which would dominate the rest of market?
Currently there is no sign of such a competitor, car market is very fragmented, there are dozens heavyweights competing in different market segments and there are no common denominators except the ones which are required by the law. So the situation resembles nineties when there were several companies offering mobile phones, which were not compatible to each other except having a screen, a keyboard, a processor and a modem with standardised communication protocol. There are reports that Android is starting to dominate the car entertainment systems for similar reasons why phone manufacturers were starting using Android, but there is a big zoo of other entertainment systems and underlying operating systems and UIs available and there is no pressing demand to unify. Also solutions like Apple’s CarPlay or Android Auto put the question after importance of car own entertainment system, as its functionality is mostly replaced by these systems, which get better with every annual release of the underlying operating system, which is still not the case for car entertainment system.
The very moment of unification of mobile phone market happened when Apple has introduced iPhone and showed the undeniable superiority of its system compared to everything else on the market. Market leaders like Nokia became burning platforms and have never recovered. As a counterweight to iPhone and its iOS the phone manufacturers needed something similar and Google offered Android to them, the rest is history. What could be such moment for the car industry?
I think this will be the moment, when Tesla will announce the achievement of Level 5 autonomous driving (I put aside the question, if it will ever be achieved and the laws will be adapted, if not, then all this discussion is purely theoretical). But if this is the case, then all other car manufacturers will be in despair for a similar solution and then they will take the system, which is available and promises to deliver similar results than Tesla’s. Which system will it be? I don’t know, but most likely there will be only one system, which then will form the counterweight to what Tesla is offering. This system will certainly ask for some hardware requirements like certain type of processors, sensors, communication channels and the car manufacturer will quickly standardise on them (the ones, which will not be quick will share Nokias destiny). Then we will have similar situation as in mobile phone market right now, two systems, one controlled by just one manufacturer, while the other used by all other manufacturers, which will compete for differentiation in other areas.
Sonntag, 5. Mai 2019
Why Teslas FSD Chip is a Big Deal for the Whole Automotive Industry
Last week during a financial call Tesla has introduced a chip, which was created by Tesla themselves, they called it FSD, which stands for Full-Self-Driving. It is an exaggeration though, since experts say, that the capabilities of the design are sufficient for Level 2-3 autonomy, but definitely not 4-5, which would be full self driving. Nevertheless, it is a premiere that a car manufacturer is designing a chip, usually this is left to Tier-1 or Tier-2 suppliers like Infineon, Bosch or nowadays NVIDIA or Mobileye-Intel. The existence of the chip and the way it is advertised, might call a disruption in automotive world for several reasons.
In the past the IT world was ofter compared with cars, remember the infamous „If Microsoft would build cars?“ joke. Now it is time to change the sides. Let’s look at the mobile phones market. In the past there were several Tier-1 companies, which provided application processors to mobile phones manufacturers, like TI, ST, Infineon, Samsung. Nowadays there are still Tier-1 companies, which are providing application processors like Qualcomm or MediaTek, but the top-notch phones have processors, which are created by the creators of the phones, like Apple with A-series processors, Samsung with Exynos or Huawei with Kirin. So now that Tesla has presented an own processor, there is a valid question, if other car manufacturers will also start designing their own processors in order to differentiate from the rest, show technical excellence and exclusivity. This might disrupt the whole established car supply chain.
Remember the days when it really mattered, which processor was in the PC you were buying. All technical details like processor speed, size of caches, bus and memory speed were important. The same was valid for cars, the cars were sold due to technologies like airbag, ESP (Electronic Stability Platform), power steering, ABS (Anti-lock breaking system), fuel injection system and so on. These days are gone long ago, most of the advertising for cars or PCs is not about technology, but about emotions, which are achievable using this technology. Having a long technical presentation during a financial call might bring the selling because of technology back, but now it is the electronics in the car, which really matter and ensures advantages of one manufacturer over the others. And since electronics became the most valuable asset in a car (in terms of financial value, but also in terms of competitiveness), the car manufacturers might not longer rely on the suppliers, but want to design the most important components themselves for the matter of differentiation.
One of the interesting parts of the presentation was the fact that the new computing platform has replaced the old one, which was based on NVIDIA. This is hardly possible in other cars, to simply (I don’t know the details, so might exaggerate here) replace the electronic heart of the whole system. So at least internally Tesla has reached some kind of standardization, which has yet to be achieved by other car manufacturers. This is absolutely required in the future, since the cycles of car renewal and car electronics renewal are completely different, a car might outlive several generations of car electronics, so there must be a standard, how the different generations of car electronics can be plugged into the car and the user might experience a new level of autonomy with the new hardware. Maybe even a completely new market for autonomy accelerators might be created here, when there are several different manufacturers of accelerators competing and exchanging the accelerator would be as easy as exchanging of car radios was in the past.
Donnerstag, 8. November 2012
How the Open Source movement won the battle, but lost the war
there is a saying in German: Don't wish anything, it might come true, but completely different as you want it. This is very true now for the open source movement. Let's take a look around.
Linux is probably the most widely used operating system in the world, if we count all embedded systems, like wifi-routers, smartphones, tablets, GPS-receiver, smart-TVs and other devices most people do not actually know, that these are powered by Linux. Regarding Android I think I can claim that the moment is not too far away when Android will become the most widespread operation system for devices, which we call computers and leave Windows behind, maybe this moment is already there. So this is undoubtedly a success for the open source community that an open source kernel is powering so many devices in the world. But on the other hand, yes Android is open, you can browse the source code, but can you really contribute? As a private person, where can I check-in my fixes and code suggestions? Who are the code maintainers and integrators? Where are all the Android distributions like we used to have with Linux? Sure, it is possible to hack the device and flash the ROMs with new software, but compared with the millions of people, who are using Android, how many people are using custom ROM software? It stays a small community.
The second battle is related. Open Source community always insisted that the used should have full control over his/her hardware and install the operation system he/she likes. Well, in PC-world we are at this point. Installing different system on a regular PC is dead-simple, but try it on a phone or a tablet! Sure it is possible to install Android-system on an iPhone, but again, this is really cumbersome process only for very few of us. Also the number of open source OSes for mobile devices is very low compared with the number of open source OSes available for PC. Hopefully this is just matter of time.
Software should be free. Well, we are close to this point. 90% of software in Android store is free. But it is free as in beer, because there are hardly apps, which source code is published somewhere. At least with Android it is possible to install software without using the official store, so using open source software is easier, but again hardly any app developer is open-sourcing the app. It would be an interesting idea to have an app store, where only apps are published, which source code can be downloaded somewhere.
Lot of apps have access to the cloud. Also we use lot of cloud services with the web-browser. Cloud infrastructure is based on open-source components, like Linux, Apache, some middleware server, open-source database. This is great. But what about all the application logic? Again, there is hardly open source available of all these cloud-based applications. But we provide lot of our most private and sensible data into the cloud. Google claims that there are more than 1 mio Android devices activations per day, that means most of these users are sending their address books, with all private phone numbers, addresses, photos and so on to Google and they trust that Google will not misuse the data (here even open-source will not help), but also that the application software is that secure that no hacker can get access to the cloud and have the most accurate address-book in the world! One of the reasons, why open source is so important is because lot of specialists are able to verify the code and find weaknesses. Another problem with the cloud is that the user basically looses control (and sometimes ownership) over his data and has to trust the cloud provider. This is certainly not the idea of organisations and activists, which engage in open source movement.
So it looks like the open source movement won some battles. Open source is everywhere, PCs are open for installation of large variety of open source OSes, with modern UIs open source software is user-friendly and polished, on mobile devices Android is the most widely used operating system. Clouds and Internet are not imaginable without infrastructure provided by open-source applications. But on the other hand most of the modern developments in the IT-world like apps, smartphones, tablets, browser-apps with logic on a server in the cloud are powered by open source, but are not open source themselves. Developer do not publish the source of their software and the choice which software is running on my device is greatly reduced. So open-source community should think about the strategies how to adapt to the new environment.
Mittwoch, 25. April 2012
ChromeOS for mobile devices
I'm quite a fan of Google and most of the Google products. I love Chrome, which is my default browser on my Mac and I like Android, which is OS of my mobile. When I heard of the ChromeOS for the first time I was intrigued by the concept, because it is so radical different, from what we have today, but on the other side it is very logical consequence of our shift from desktop applications to browser-based ones. Still is requires a courageous mind shift, to cut the rope of being able to download and start a Windows or Mac application and fully trust that there is a replacement application on the web, which provides the same possibilities. Also it is kind of scary for road warriors to use browser based apps and being dependant on ubiquitous net-access. Sure, Google tries to make their apps working offline as well, but this is just beginning, the question is how many other browser-based apps will offer this possibility as well. That means ChromeOS is suited best for strictly defined working environments, better not on the road. Which brings me to the question, why are there only notebooks available with this system?
But anyway, I don't have figures how well ChromeOS is selling. But here is a suggestion how ChromeOS could become the most successful desktopOS. Motorola showed already a mobile phone with Linux desktop (Atrix). The idea is that a mobile phone can be connected via HDMI to a monitor and via USB or bluetooth to keyboard and mouse. As soon as connection to monitor is detected, desktop Linux distribution starts on Android kernel. All of the data like contacts, emails can be shared with Android. The concept of Motorola headed in the right direction, but there were some rough edges, like outdated software preinstalled, and the update process was quite cumbersome. In March Ubuntu announced a distribution, which can be preinstalled by phone manufactures on their phones. The concept is the same as with Motorola phone, but the Ubuntu distribution is famous for its user-friendliness. So far I'm not aware of any phone, which uses Ubuntu, but I guess this is just a question of time.
The concept of turning mobile phone into a full-fledged computer is certainly intriguing. But even compared with a simple netbook a mobile phone ofter lacks required amount of storage capacity for the programs and for the data. Also there is a question how to synchronise this device with the main computer. That's why a cloud based operating system, where all the data are stored in the cloud and the programs called from the web is the right choice for a desktop mobile device OS. That's where ChromeOS can show its strength. ChromeOS doesn't need lot of memory and processing power, all the programs don't have to be available on the storage medium and all the data is saved in the cloud. Places where a monitor and a mouse are available, should have at least WI-FI connection available as well. One important fact is of course that ChromeOS is already available for ARM processors, so most of the mobiles should be able to run it right now. So ChromeOS running on Android phone would be a perfect matching case, between the requirements of a desktop system and what mobile device is able to provide.
There is already Chrome available on Android 4.0. So let see if Google engineers can extend it, so that it also usable with a desktop station in a desktop mode. It is absolutely imaginable that soon the internet cafes and business-oriented hotels will just provide internet access, monitor, mouse and keyboard, so that business traveler can connect their phone to these devices and continue working. Acer showed already a mobile phone which can be plugged into a tablet, expect mobile phones, which can be plugged in mobile notebooks, without a processor. With modern ARM-processors with several cores mobile devices are able to compute larger amounts of data and execute complex programs written in JavaScript. So since mobile devices are growing on much faster rate than desktop-oriented ones, it can be expected that preinstalled ChromeOS could become the most widespread desktop-oriented OS worldwide.
Mittwoch, 25. Januar 2012
My experience with Lumia 800
First task I had to do, was importing the contacts from her old phone, a Nokia 6230i to the shiny new Lumia. Saving contacts on a SIM-card and using it in the new phone does not work, because the new phone needs a Micro-SIM card. So I installed Nokia Suite and could import the contacts via Bluetooth. But exporting from Nokia Suite to Lumia with Bluetooth is not supported. Lumia has an option "Import contacts" which should connect via Bluetooth to the old phone and get the contacts, but for some reason it just didn't work, the phones found each other, but then the transmission just stopped. So I googled a bit and found out that it should be possible to export the contacts from the Nokia Suite into a file in proprietary format, but there are programs which can convert these contacts into CSV, which can be imported into Microsoft cloud. But for some reason the Export->Save menu entry in Nokia Suite was greyed out and I had no idea why. So I could not find any but manual way to get in the contacts into the brand new Lumia.
Second task was the creation of Windows Live ID. Why is it not possible to create one with the phone? You have to know, where to go (www.live.de) and have to fill out a large form with all your personal data. Microsoft wants to know much more about you, than Google or Apple. And why is all this "live" service so slow? Does Microsoft know something about AJAX? All the time new pages come up, the page addresses are changing, the UI is unpleasant compared to iCloud or Googlemail. Is it really necessary to show ads here, does Microsoft really need the money? And how is it possible that Microsoft shows an ad that all his online stuff is supported by iPhone5? I really had to check the news, if I missed something, but 4 months after introducing 4S, Microsoft was still toо lazy to update its ads.
Next task was to update the Windows Phone OS with Mango Update. You have to know, that you need Zune software for that, which is not included in Windows Vista. So after iPhone cut the cord, Windows Phone is the last of the major phone OSes which needs computer for OS-updates. After downloading Zune, I had to register again, again on PC, again large form with my personal data and now I had to invent a community name of my phone, which seems to be an online name for whatever service as well. Only letters and numbers are allowed, no "-", no "_", no "." Of course all readable and meaningful names are already taken, it took me 4 times to find a name, which is still available. I still don't know why I need it. Finally I downloaded the update (I'm not even sure, which one is it, there was no version of the update communicated). Can somebody tell me, how I can put some photos, which Zune found on my computer on the phone? Music was no problem, but photos seem to be more complicated. Did I say that the Zune app looks really ugly and violates all Windows UI-guidelines?
So after creation of all these accounts I wanted to use Nokia Maps. Again you have to register, this time for Nokia! Jesus, why is it so complicated to use ONE name for all the services! With iPhone and Android you have to register ONCE and all the services work.
Now couple of words about the software. The start screen is nice, but the second screen with all the apps is already overcrowded, so how it will become with all the apps? Ever thought about multiple columns and maybe subdirectories? Talking about preferences, is it possible to install an individual ring-tone? If yes, how, it is not obvious. At least it is quite simple to change the colour of the icons. When I set-up the email I could not find if the POP-mails will be left on server or deleted, there is no setting about it, so I assume (hope) they will be left on server. I'm already excited to see if my girlfriend will be able to connect to the company Exchange, which was the main reason why she got a Windows Phone. And typing of the virtual keyboard is quite hard, at least my girlfriend always hits the button or the link, which is just below the desired one.
Now let's go to the shop and see all the promised software. There are not too many apps for explicitly German users, there is "Die Bahn" app, but no app for the public transport timetables. Yes, I know that Nokia Maps provides me shortest ways using public transport, something where Google still has to learn, but Nokia Maps doesn't know anything about the time tables.
So after setting up the phone, which took me about two days, I have to say, that for an average Windows user it is close to impossible to setup the phone with all the services. Four years ago the software was OK, but compared with todays standards set by iPhone and Android, Microsoft has to polish, polish, polish. Not only the software on the phone, but also the cloud. Otherwise Microsoft will never catch-up with the other two mobile players, no matter how much money it has. I think the problem which faces Microsoft is a self-made one. Microsoft had a department for online-services, for phones, for games. In the past these departments were working separately from each other, every one had their own customers, no interoperability was required. But this has changed now, online-services, phone and games have converged into one package, but the departments are not. Therefore they still have own profiles for customers, though it is always the same person using one device. This topic Microsoft has to address.
Mittwoch, 23. November 2011
Interview in www.software-dev-blog.de
Dienstag, 11. Oktober 2011
How speech-recognition endangers languages
So far it sounds very promising. Instead of searching for information over various websites, I can simply ask a question and with a bit of luck I get correct answer, probably even spoken one. So far so good, if I communicate with my phone in English. With German or French life becomes bit harder, not all information is available, and now the real question is which languages will be supported in the future? Probably Top 10 languages, maybe Top 25. But we've just learned that supporting a language by Siri is not enough, also the information-containing databases must have information available, which is for sure not a simple task. Now think a few years forward, what will happen, if technology matures and devices come to market whose only input is voice of their owner? Will these devices be able to support all languages or just concentrate of couple of markets where most money can be earned? Is it too much effort to teach the device such language as Estonian with 800.000 speaking it as mother tongue?
Let take a look at Wikipedia. More than 100.000 articles are available in 39 languages (2.5 Mio articles in English, more than 1 Mio articles in German and French), more than 10.000 articles are available in 64 languages, more than 1000 articles are available in 109 languages, more than 100 articles are available in 95 languages. That's impressive, but ethnologists guess there are about 6500 languages spoken now, about 2/3 of them are endangered.
Look what happened with OCR software. Company Abbyy, with one of the best products on the market supports 189 languages, 45 of them with dictionary support. I could not find a statistic how many languages can be written, but it is quite clear, that these are many more than 189. So documents which are written in these languages cannot be OCRed, which is at least annoying. Situation with Wikipedia is better as with OCR software, probably because it is quite simple to start entering articles in a new language, no technical knowledge is required (the operating system has to support the characters which are used by the language, but with Unicode-support which contains 65.000 symbols this is less of an issue).
Speech recognition requires much more linguistical and technical knowledge than OCR. Feeding databases with information required for a meaningful and useful conversation with a machine is even harder. Therefore it is quite certain that only few languages will be supported with full range of information. What does it mean for the people, who are speaking different mother tongue? If they want to use new devices, they have to use a different language then their mother tongue. So dear Estonian and dear Switzerdutch speaker, be prepared to learn English, German or Russian if you want to have one of these new shiny gadgets.
Montag, 15. August 2011
What are the next steps for augmented reality?
Currently augmented reality can be experienced through mobile device with display, GPS and cam, the user points with the cam at some point of interest and the software overlays on the display the cam picture with information from Wikipedia or other sources.
Now imagine a device which looks like glasses. The glasses are transparent, next to the glasses there is a small cam. The glasses have a wired (or bluetoothed) connection to a mobile device, which connects to the Internet over LTE. The user looks though the glasses and the information about what he sees is transparantely overlayed. This is the way how our real world gets a coverage by the digital world. Several questions are arising.
What is the technology behind the glasses? Transparent LED-screens are in development for at least 10 years now. I've seen some at CeBIT when I was a student roughly 10 years ago. Also some of high-end cars from BMW show the driver information on the front glas. So it should be possible to pack this technology into glasses, which are not too heavy. The remaining electronics can be integrated in a special device, which is very similiar to todays mobile phones.
How does the input look like? Some of the actions, which are not too complex should be doable by closing and opening of the eye lid and movement of the eyes in different directions. That means that a second cam is needed which watches the eyes of the user. More complex actions like dialing a number should be possible by pointing with the fingers at virtual keyboard, which appears through the glasses. Such technology is used by Microsoft in Kinect products. It is probably not possible or desireable to type longer texts with such technics, but as it was the case with all other input devices, it will not replace them, so touchscreens or even small keyboards will still be used.
The resolution of GPS is not good enough, even in combination with Glonass or Galileo the resolution will be several centimeters, so alone from GPS it will not be possible to determine what the user is looking at. Also user might want to have information about non-stationary objects, so the position will not have any value. So pattern recognition is very important. GPS could help to give rough estimation what the user is seeing in his current environment, so information from eg. Google Street Maps can be used to match exact point user is looking at. One question is how much preprocessing of the image is happening on the device and how much will be offloaded to a server. This determines the required speed of the internet connection and processing power of the mobile device.
But what kind of information can a user get? Well, starting from information about the buildings, their current value, when build, who's the architect, how did it look like in the past to information about public signs and arrival times of public transport, to botanical information about the trees or flowers, zoological names of the animals, car labels and so on. So expect huge databases, which are filled by volounteers just like OpenStreetMap. Of course there will be navigation software available. Now to more sensitive or commercially interesting informations. If you're in front of a store, you can see current offerings, in front of the restaurant you see the lunch card, opening times and ratings from other users. Lot of people will mark their places of living, their window, their car, just to earn a badge from Foursquare or whatever such a service will be called. Now to the most sensitive information. If you know everything about the buildings, the animals, the trees, the cars, the only white spaces which remain, are the people you meet on your way. Do you really think it will stay like that? It will not take too long and the software will be able to recognize automatically the faces and show the profiles of the persons. I don't think it is avoidable, even if the person is against it, but it is hardly possible to control all the photos in the internet, lot of them are tagged, so databases contain enough information for calibration of every face. The recognition will probably never be 100% correct, there will be countermeassures, like big sunglasses, strong make-up, all the tricks from celebrities, but the success rate will be pretty high.
Currently this is a horror for most people to imagine, that they will be recognized on the street by complete strangers, but I can imagine it will change. People will have to live with it, so they will adapt their behaviour and moral norms will change. There are only very few internet trends, which were not accepted by the society, like sharing of child pornography, but this was illegal before internet as well, other forbidden trends like illegal copying of software or media sharing was declared illegal by the industry, faces recognition and augmented reality in general will be a multibillion dollar market, so I cannot imagine that any industry could be disturbed in their business by that. There will always be enough people, who have nothing against being recognized in public, so first resistance won't last too long.
So what is needed for this vision to be realized? Glasses and mobile device are probably main technological problems, but it should be solvable within next 5 years, maybe sooner. LTE should provide enough bandwidth for transferring the data about pattern recognition and information about the recognized objects. Massive databases are required for providing information about every object and an army of volounteers, who are feeding these databases. A new operating system with new input and output possibilities for the glasses and an effective system how to create the data in the databases is necessary. But all these issues are hardly unsolvable, so I expect this to happen in the next couple of years.
Mittwoch, 29. Juni 2011
Call for content creation OSes
At home I'm a Mac guy since MacOS X 10.1. There was a time when I really wished that at some point MacOSX would be supported by the EDA software, that was a time when Maya was ported to OS X, when AutoCAD for Mac appeared and some of other engineering tools were ported to Mac. Apple positioned MacOS X as UNIX OS with supported XWindows port, with open-source Darwin core, with FreeBSD userland, with OpenGL, first citizen Java VM and so on. Now latest with introduction of Lion there is absolutely no point in porting professional software to MacOS X. From content creation OS it now becomes a content consumer OS. As I wrote one year ago there should be a differentiation between content creation OS and content consumption OS. Content consumption OS should run on a variety of fast booting, network centric, often mobile devices, it must offer easy access to different media, free or commercial, offer unified messaging, have interfaces to different social networks, must sync with other devices and must be dead simple to use. Software, which runs on content consumption OSes, should be flexible enough to run on variety of devices, which may have different screen sizes or input methods. Often these devices are connected to cloud, where media and personal data is saved. One of the main applications is a powerful browser with support for the latest standards like HTML5 and WebGL. The applications and media are provided through a store.
With introduction of Lion and Win8 Apple and Microsoft are heading exactly in direction of consumer OS. It's understandable business decision, 90% of users are consuming media, only 10% are creating. Application and media stores, cloud offerings bring revenue after the sale of the OS. At the end it's fancy, pads, smartphones are selling like crazy, social networking and digital media distribution is all the rage, lot of office applications are moving into web, so some office workers don't need a powerful PC any more and are happy with devices with consumer OSes.
But what about content creators? People who used to have workstations, MCAD users, DTP-professionals, 3D-content creators, architects, geologists, biologists and other scientists? Do they really need an application store? Their software has completely different sales model, than through an application store. How do they update their Mac at work to Lion? Will every employee need an AppleID and put $29 for Lion update on private expenses? Have you read what Apple says about new UNIX features in Lion? How will professional programs benefit from iCloud, from Auto Save (saving of huge databases might take several seconds and block the user from working)? We don't know much about Win8 yet, but for sure none of professional CAD applications will use JavaScript and HTML5 or Silverlight or XNA for designing of their UI. All these techniques make sense in order to easy port of applications to pads or smartphones, but does anyone need Catia on pad?
So after differentiation between server and desktop OSes, now it is time for differentiation between content creation and content consumption OSes. The aims of the OSes and user groups are too different, so that one OS can fit all needs. Linux world shows how it should be, while Ubuntu seems to target consumers, RedHat Enterprise distros are heading toward professional user. The same should be the case for Windows and MacOS. I don't see lot of chances for MacOSX, Apple stopped to care about the professional users couple of years ago, but Microsoft really should rethink if they should establish an extra line for Windows for Professionals, which is not intended to merge with pads and smartphones, but will remain a powerful, stable OS for power users without lot of experiments on UI and programming models.
Project Nadal and its impact on the future of gaming
First let take a look at the hardware, which was used for the project. Beside the XBOX 360 console the most interesting part was a camera, which is able to catch the third dimension of the person or other object in front of it. The technology reminds me of ZCam developed by an israel-based start-up company 3DV. This company was bought by Microsoft few month ago, but Microsoft denies that the technology for their cam comes from 3DV, the reason why the company was bought were patents. But anyway the technology must be quite similar. ZCam from 3DV uses infrared rays to measure the distance to the object, so it is a kind of radar with a resolution of 1-2 cm, which should be sufficient for most needs. The cam has also a microphone, which is needed for the voice recognition capabilities.
But the most interesting part is the software. Microsoft research center integrated so much goodies, which complement each other, that it is hard to separate them and view at each of them independently.
Let start with face recognition. The software seems not only recognize the user of the console, but also the mimics and make assumptions about his current mood. This requires very advanced pattern recognition. The number of users in a home-based console is probably not that large, so the recognition should be quite easy, but finding out the feelings of a person based on expression on his face isn't that simple. It is interesting, if the software needs any calibration in advance. As can be seen in the video, the mimics are used for gameplay (fire balls out of monster's mouth), advanced KI can change the game, so the dialogs can be more personal, music can be played, or films from the online video store can be suggested based on the mood of the user.
Scanning of the objects, which can be then used in the game is another great improvement in the game play. In the demonstration of a new game, which uses capabilities of Nadal, Peter Molyneux demonstrated how the camera scanned a drawing on the paper, which was used for the continuation of the story. Again a very advanced pattern recognition is needed for that. So I think first games will use this feature, just to get the pattern without recognizing it, so things like skateboards or cloths can be customized. Of course this technics can be used for something what Second Life has promised but never delivered, that is the possibility to become one with the avatar, so that it becomes a truly virtual mapping of yourself. This is actually a dream for all fashion companies, so that the customer can try all cloths (even with combining them with cloths he already has) before ordering them. Probably the resolution is still not high enough for tailoring new cloth, which fit exactly, but with the time the resolution will improve, so it becomes possible to send orders for individual manufacturing of clothes.
Voice recognition is an game controlling element, which hasn't been used too much, because it is too slow to control a game with words and the variety of expressions is too large, so KI must be very advanced to be able of handling it. But there is one type of games, which are perfectly suited for voice recognition, these are all quiz shows. Computer must recognize just the right answer, which is much less complicated then handling free speech. However the demonstration of Milo showed that Milo seemed to understand what the person was saying. The answers reminded me of ELIZA, but recognition of free speech and conversion into format for ELIZA is very big achievement, if it really works as promised.
Recognition of players moves. Sony's EyeToy could detect moves, but without support of measurement of 3rd dimension, the recognition was quite inaccurate. Now Microsoft is promising that the whole body will be recognized and the resolution will be much higher without need of any controller. Peter Molyneux is absolutely right when he is saying that controllers with more and more buttons prevent a natural interaction with the console and Nintendo's success with Wii only proves it. So now even the Nunchuck is not required, which should increase the community of console players even more, because the entry barrier is very low. Just stand in front of the TV and start playing. One often criticized point is that it is unrealistic of driving a car with an air wheel, but player can use every object as a wheel, if he wants to have something in his hands.
So what is missing now for a perfect gaming experience? The input is perfect, but the output still lacks some important features for complete diving into the virtual environment. The visual output is with introduction of HDTV much better, but now the format of the screen is not optimal. Of course a VR-cave would be the perfect solution, but it will remain expensive and consumes too much space, so it is impractical. All VR-helmets failed so far and they do not allow social interaction with other persons in the room. So a solution would be a screen, which has height of human body. A fight is much more realistic, if the opponent has approx. the same size as the player himself, so are all sport competitions. For different games, which need a bright view angle like flight simulators, the screen should be rotatable.
3D-cinemas have a new revival with the new digital systems, so this technology should become affordable for home users as well. Either the user could wear shutter-glasses or there are special monitors, which are able to show 3D even without this. A console must generate double as many pictures, but I don't think it is a big problem.
The biggest issue is the force feedback. A boxing fight without having physical contact with the opponent is not realistic. So while gaming industry is offering vibrating controllers or special seats, these solutions do not work if there are no controllers and the gamer is moving in the room. So fresh ideas are needed here.
As a conclusion I can say that project Nadal is revolutionary for the gaming industry, it combines several very advanced technologies into a solution which makes lot of sense and is very intuitive for the consumer. It is interesting to see what kind of games will be using this technologies and how much effort it will be to create such games. Microsoft promised to deliver the cam in 2010, so it remains to be seem, if all promises can be fulfilled. However there are still lot of wishes open, which could make gaming even more realistic.
SoC
A modern SoC consists of one or several micro processor cores, most likely ARM architecture, several interfaces, like DDR memory controller, USB 2.0, HDMI, I²C, CAN for car entertainment systems, hardware media decoder, 3D-graphic accelerator, analog-digital converter, even physical sensors for acceleration and alike. A single company can hardly develop all these parts alone, so it needs to buy IP from other companies. There are hard and soft IP macros: soft IP means just Verilog description of an IP (think of ARM core, which can be optimized timing wise) while hard IP means a complete layout for a specific technology (think of perfectly layouted USB controller). Since all parts are on the same die and are manufactured at once, all IPs must be available in the same technology of a certain foundry like TSMC. These many blocks introduce additional difficulty for developers of analog parts of the chip because analog parts are much more sensitive to variations during manufacturing. Moreover irregular analog structures cause more problems for lithography than regular digital structures in standard cells. There are solutions for this problem like SiP (System in a Package) or 3D-chips, where analog dies are ordered vertically or horizontally next to the digital die, but this means higher costs, since basically two chips must be manufactured and connected in a tight package. Another problem with integrating different functionalities mixing analog and digital parts is that these parts can disturb each other by injecting noise in substrate, by dissipating more heat on a smaller area as well as consuming more power in smaller areas. So if the power grid inside the design is not calculated carefully one part could soak more current and leave other parts underpowered.
But real challenges arise for SoC designer due to new requirements, which are necessary for a modern SoC design due to the fact that it has to be sold several million times in order to become profitable:
1. New interfaces - A SoC must be able to handle inputs from multi-touch displays, GPS satellites, Hall-sensors (magnetic compass), acceleration meters, light sensors, high resolution cameras, several wireless standards, and other input devices. It must drive high-resolution displays (eventually 3D), output hifi-quality audio, or give even physical feedback using actuators.
2. New possibilities for connectivity - A modern TV can connect to internet wirelessly as well as needs to connect to video input from several devices, like blue-ray player, set-top-box, game console. It has Firewire and USB interfaces for external hard-disks, several slots for memory cards. Connecting all these device types to a SoC must be handled by it.
3. New programmability – since the iPhone and its very successful AppStore concept everybody is talking about the app economy which means generation of revenue after sale of the product. Every smartphone series has its own AppStore, in foreseeable future TV and set-top producer will have their own, also AppStores from car manufacturer for their entertainment systems are expected. What does it mean for a SoC? A completely free programmable SoC must be tested more carefully because in advance it is not known which software will run on the system. Moreover since introduction of Windows for ARM several operation systems must be able to run on a SoC and support all its interfaces.
4. Low-Power - mobile systems need to run as long as possible on a single battery charge, also stationary devices should not consume too much power for environmental reasons. That means that parts of the device which are not needed at the moment can be switched off, must wake-up as soon as they are required and start communication with active parts.
Combining these requirements with advanced technology nodes, short time-to-market window, and the pressure to sell several millions of SoCs it becomes clear that some new approaches are needed rather than old ways like writing software and developing the hardware independently and bringing both together after the design has been produced. The amount of verification and testing of different configurations is basically exploding. In order to fulfill the requirements listed above the development of software and hardware must be tightly coupled. That means the software must be able to run on a model of the hardware design which resembles the functionality of the hardware as exact as possible. But here comes the necessary trade-off: it is possible to simulate the behavior of a single transistor and parasitic effects, but simulation of several millions transistors is simply not possible. So a higher abstraction level is necessary, which is still accurate enough to allow that the results are not too different from the produced silicon. Since a SoC consists of several IPs, one of the requirements of modern IPs is to have different models which can be used in simulation and verification of the whole system. If simulation is still too complex to be handled by software running on regular workstations, there are special hardware solutions, either based on FPGAs or special processor arrays, on this hardware the model of the system can be uploaded and emulated.
All big EDA companies started preparation in order to handle the new requirements. Synopsys bought two verification companies and is the biggest IP provider. Cadence started the EDA360 initiative in which it develops IPs with simulation models and creates partnerships with other IP companies like ARM. Mentor is becoming active in software business: it bought several Linux-oriented companies, so the promise here is to have tightly coupled soft- and hardware. Cadence and Mentor are also partnering in defining standards for verification of SoCs and both have powerful hardware based emulation solutions.
Due to the rising complexity and high manufacturing costs of a design in advanced technologies the main focus for chip industry is not development of the chip but integration of several parts into one design. Only a verified design with optimized drivers is competitive on todays market if it consumes less power and provides great multifunctionality.
The insane world of programming for mobile devices
PalmOS: Palm transformed its handhelds into smartphones, but all applications written for PalmOS could still be used.
WIndows CE: There were several versions of the mobile Microsoft OS, the apps for different versions were not always compatible, but could be adapted
Symbian: Coming from PSION devices the platform was highly optimised for mobile usage, though not easy to code for.
JavaME: Stripped down Java version was included on lot of featured mobile phones. Was good for games and simple apps, where the UI could be completely customised, but a horror to test on different devices and to certify the code. The expectation was that when the devices become more powerful JavaSE and JavaME could be merged as some point, JavaFX was also a hot candidate for the JavaME replacement, but it seems Oracle is not very successful in convincing the platform creators to include JavaFX in their environment.
With exception of JavaME all platform could be coded in C or C++. For JavaME there was a NetBeans plugin from Sun with all required emulators and debugging tools, Windows CE code could be written in Visual Studio.
Then the iPhone appeared on stage and nothing was the same as before.
iPhone did not run JavaME, iPhone did not run Flash, it had its completely new environment for mobile programmers, who had to learn C Objective and handle XCode. Nevertheless they followed Apple and created a stunning number of 300000 apps, which can be downloaded from the AppStore. The hype around iPhone and the lesson what a phone must have to become successful was learned quite quickly by the other platform creators, so they started developing own coding environments in hope that app programmer will use them and create a similar amount of apps for their platform.
Now the situation is that every modern mobile platform asks for a different language, different API, different coding environment:
| Platform | Language | API | Coding Environment |
| iOS | C Objective | Cocoa Touch | XCode |
| Symbian | C++ | Qt + Symbian | Qt Creator |
| Meego | C++ | Qt + Linux | Qt Creator |
| Android | Java | Android API | Eclipse Plugin |
| Blackberry Classic | Java | BlackBerryOS API | Eclipse Plugin |
| Blackberry Playbook | Flash, JavaScript, HTML5 | Flash Creator | |
| Windows Phone 7 | C# | Silverflash | Visual Studio |
| WebOS | JavaScript, HTML5 | webOS API |
Crosscoding between platforms is quite difficult, since not even MVC paradigm can help here, all parts of the code must be transformed in a different language, which is just as much effort as starting programming from scratch.
There are several attempts how to create an app, which works across several platforms:
- HTML5, JavaScript, PhoneGap - All platforms have powerful browsers, which understand a subset of upcoming HTML5 standard and JavaScript. So the idea is to have either an app which consists just of a web-view and a hard-coded internet address. The problem with this approach is that for using this app, the user must be online. Even if all the code is stored offline the second problem is that not all features of the device can be accessed by JavaScript, this is where PhoneGap and similar software step into the ring. They provide a JavaScript API which allows access to device features with JavaScript. Since the API is the same for all supported devices, apps which have been created using PhoneGap can run on different platforms.
- Flash - Adobe is working (marketing) hard to position Flash as a replacement for JavaME, i.e.. a platform which is available for a variety of devices with least common denominator (which is of course much higher than it was for JavaME). So far Flash is available for Android, Symbian, Meego, Blackberries new OS, but there is a compiler for iOS, which transforms Flash into a C Objective app. Probably Flash will be used for the same kind of apps as JavaME, for apps, which do not have to look like native apps e.g. games or fun apps.
But not only programming is different for each plattform, business models are also different, e.g. iPhone user are glad to pay small amount of money for an app, the Android apps should be better financed through ads. The procedures of app-signing, of reviews by AppStore owners, of becoming a publisher in an AppStore, of the policies for an app are all different. All this means that creating apps for different plattform is each time a business decission, which must be reviewed carefully, if it makes sense to support this or that platform. It is not just about going mobile, but going mobile on which platform.
So far there are two clear winners in the app race, this is iOS and Android, with 300000 resp 100000 available apps. But nothing is as fluid as mobile app market. Nokia is still the number one smartphone seller, after bringing Qt on their platform it is possible, that lot of Linux-savvy programmers will be attracted by Meego. Never underestimate the marketing power of Microsoft and Ballmers call for developers. The company behind Android, Google is having hard time from being sued by Oracle for violating patents Oracle has purchased with Sun IP properties. So in half a year the numbers might look completely different and a new competitor can suddenly arise from nowhere. This means that the developer must be prepared to be forced to learn new language and new API. The best thing for them would be if a consolidation would take place to 3-4 platforms and powerful JavaScript/HTML5 API which allows cross-platform programming in one language.
Don't Believe the Hype
Well, this is what we thought, when we started to develop our applications. We are a small startup in Germany and our idea is to provide a new Local Based Service for mobile devices and a portal. When you have a startup you never have enough resources, neither time, nor personal, nor financial, nor lot of experience. Therefore the idea was to use cloud computing as back-end solution. We don't want to have own server, buy expensive upload bandwidth, configure it, administrate it, secure it, backup it. We just want to start programming of our application. We were looking at several alternatives but at the end we decided to go with Google Application Engine. GAE was very intriguing for us, because it offered a Java environment with Google database, fast searching algorithms, low costs and well, this is Google, so what can go wrong? Unfortunately quite a lot.
After installing Eclipse GAE plugin and reading some documentation I was soon able to create first example, test is on localhost and upload it on GAE server and voilá it worked. Encouraged by this success I decided to develop our whole application on GAE.
First difficulties started, when I tried to create references from one object to another and save it in the database. The web is full with happy coders who are praising Google how easy it was to create a 1:1 reference, or even 1:n, but I was not able to create references, which worked flawlessly. At least in documentation it was stated that m:n references are possible just by manual managing of the keys of the referenced objects, so we ended with manual managing of the keys of all objects, so back to the roots. What by the way was cascading?
After a while, the GAE O/R mapper refused to enhance the POJO entities. As O/R mapper GAE is using DataNucleus. Why they are not using widely accepted and proven Hibernate is beyond my imagination. DataNucleus is nowhere as praxis proven as Hibernate and for some coders this might be English humor, but for me the support answers from DataNucleus guys were pure arrogance. After wild configurations orgies finally we gave up the idea of starting the application from Eclipse and started using an ant script, which worked quite nicely as long, as the application had to be started on the localhost.
After our application became more complex and we deployed it more often on the GAE server, so that more people could take a look at the progress, we realized that the starting time of the application were horrible. It took about 15 sec, till the start page appeared in the browser. Last time a webpage took 15 sec for appearing on my browser was in the 90th, when I was surfing for overclocking tips on weird Japanese websites with my 56kbaud modem. After searching in some forums I realized, that I was not the only one affected by the issue. It seems, if the application is not in usage, it disappears from the main memory of GAE server and it takes long time, till it is reloaded (maybe even recompiled) and is ready to serve. On the forum people were discussing how often a client should send a request to the GAE server, so that own application does not disappear from the memory! Seems it is becoming cat and mouse catching between Google and GAE users, because the intervals between the pings are getting shorter and shorter.
After testing on GAE server we started to realize that the behavior of the application on server is different than in testing environment. The application crashed, at situations, where it run flawlessly on localhost. The problem was that the logfile stayed clean, so no indication what might be wrong. Also complete crashes were not uncommon, when not a single user from different locations could access the application. It took me quite a long time to find out how to restart the application after total crash ("appname".appspot.com?restartApplication).
Another problem risen up, when our webdesigner started his work. It is not possible to upload single files, it must be the complete war directory. So even if a picture has changed, the whole application must be redeployed. Why should an external web-designer have access to the whole application code?
Database administration is very basic. Neither it is possible to dump the whole database or delete it completely and start with a new one. A database viewer is available, so it was possible to see, which references again have been either not created or created wrong.
But the biggest issue hit us two weeks ago. For some reason it was not possible to deploy the application on GAE server! Without any reasonable explanation the uploading stopped at 99% and rollbacked to the old version. If such a thing happens during production mode, this is absolutely unacceptable. Two weeks later the deployment is still not possible.
This was the last drop, therefore say hello to MySQL, hello to Hibernate, hello to Tomcat, hello to BlackHats.
The idea of cloud computing is great, just upload your code, the provider cares for the rest. But praxis shows completely different picture. Cloud Computing must be taken with a very big grain of salt, currently only for testing, at least GAE has still a long way to go, till it can provide a viable alternative to an own server.
Call to Apple: Please Open Mac OS X (or Others Will)
Two recent news items regarding virtualization of Mac OS X hit the street recently. The first news item is that in their EULA Apple allowed running several Mac OS X server instances on Apple hardware and the well-known company Parallels (which was bought by SWSoft) announced Parallels Server, the company's hypervisor-powered server virtualization solution, which does exactly that. Parallels Server can run on every x86 server and can virtualize Linux and Windows there, but virtualization of Mac OS X is only allowed on Apple hardware. The second news item was the announcement of a German hacker Alexander Graf at the CCC-congress that he modified the popular open-source emulation software Qemu so it can run an unmodified Mac OS X instance on Linux, but since Qemu is portable, it should work on different platforms (e.g. Windows) as well. In his project description Alexander writes that in the EULA Apple does not mention that Mac OS X is not allowed to be installed in a virtualized environment; that means if somebody installs Linux on Apple hardware and runs a single instance of Mac OS X in Qemu it is perfectly legal. But in the wiki Alexander writes that with his modifications Mac OS X can run on other hardware as well.
Virtualization or emulation as such is nothing new for Apple. Projects like Mac-on-Linux allow running a virtualized Mac OS X on non-Apple PowerPC hardware like the Amiga One or Genesi PowerPC based hardware. But this did not really hurt Apple, because such hardware was too exotic to cause too much headaches in Cupertino.
Another kind of virtualization was even highly welcome at Apple's headquarters: virtualization of other operating systems inside Mac OS X. Several emulators for Windows which emulated x86 on PowerPC, were available, but with the transition to x86, companies like Parallels and VMSoft created virtualized environments that make use of Windows applications as transparent as possible for Mac OS X user.
The other way around, virtualization of Mac OS X itself on any other x86 computer, is a completely different thing. Apple does everything to prevent such scenarios technically and legally. But is it still justified to prevent installing of a (licensed) copy of an OS inside a virtualized environment? Mac OS X is the only OS running on x86, which is coupled to the hardware of the manufacturer. All open and closed source OSes of other manufacturers can be installed on any compatible hardware; only Apple is protecting its Mac OS X. So my call to Apple is: open your OS for other computers, or other people will do it and with the availability of the solutions described above - it never has been simpler. Learn your lessons from the iPhone: you can forbid hacking of the iPhone as much as you want, but if enough people are interested in it and the solution is very simple, lots of people will do it regardless of what is written in EULAs.
Here are some arguments, why Apple should open Mac OS X and only wins from this decision:
Apple is afraid of all the hardware it has to support, what will disturb the Mac OS X experience for the user, whose hardware combination might not be supported. Well, OpenSolaris showed how to increase supported hardware in quite a short time. Previous versions of Solaris x86 supported only a small subset of hardware, but this changed quite fast. Take the drivers from FreeBSD, it should not be too hard to adapt them for Mac OS X. Spread a compatibility check program, which tells the user before installation, if his hardware is compatible or not. Every sold package of Mac OS X should contain a CD with such a program, which can be tried out without opening the package itself, so if the results are negative, the package can be returned to the dealer unopened. Vista also does not support every hardware on earth and is still successful.
Apple is afraid that less Apple hardware will be sold. Well, what I can tell from my friends who bought a Mac recently, they did it not because of Mac OS X (they could have done it five years ago as well), but because current hardware offerings from Apple look very slick, they are competitive quality- and performance-wise, the prices are fair and the status of a Mac-owner changed in Germany from freaked-out designer and experienced computer geek to ordinary computer users, who love their iPod and want to have a well-designed computer on their desk. For them it is also good to know that they can use Windows as a fallback solution. So Mac OS X is not a must for them, they would buy Apple hardware anyway.
Apple is afraid that Microsoft will immediately stop shipping Office for Mac. This is a valid point, but I am not sure if Microsoft can allow this, because this would immediately strengthen the monopoly debate, that Microsoft is preventing competition by discontinuing an important software product only because the competitor is becoming dangerous.
The spreading of Mac OS X would only increase software sales for Apple. Currently Apple has very good software offerings for professionals and advanced amateurs for media creation. Adobe shows how to earn very good money with comparable products without selling any hardware at all.
But is there any interest for Mac OS X outside Apple hardware? I think a lot of people would like to try out Mac OS X on their old hardware and if they like it, the probability that their next computer will be a Mac is quite high, isn't it?
Virtualizing Mac OS X on computers of developers helps them to develop multi-platform software, so more of them can consider implementing their software for Mac OS X as well, without investing in a Mac first.
I am sure there are a lot of other arguments as well, so my first wish for the Jobs' keynote at the coming MacWorld: mr Jobs, please open MacOS X! [ ed. note: this article was written before the keynote]
Is the Desktop Becoming Legacy?
First we have to understand why the iPhone, iPad, and so on are better suited for the avarage user than desktop systems. Why has Microsoft's strategy of propagating the PC as the "digital hub" mostly failed? For years, especially Microsoft (but also Linux and Mac evangelists) told us to use a PC or a Mac for sharing media and devices, for creating content and consuming media, for storing selfmade videos and photos. But this strategy has two weak points.
First, to be able to accomplish most of these tasks a PC must be switched on 24/7. Only very few heavy users are really using their PC as a server. It is expensive, a PC can be noisy, the hardware is not really optmized to run round the clock and because of lot of security updates there is still lot of administration required. So the idea of having a home server is not really catchy.
Second, even with a home server it is quite hard to share the media outside the home. Sure, there are tricks like DynDNS or port forwarding, but only very few users do understand these technology and are using them. Even worse, by opening the server towards the Internet, it becomes vulnerable, which means additional administration efforts.
Sharing media is becoming more and more common. People are putting their photos on Flickr and their videos on Youtube and send the URL to their friends. Try this with your media hub at home. This is possible, but how much more effort and knowledge is needed? Regarding copyrighted content - it is no longer necessary to have it stored on your home server. Music and videos can be stored on portable devices as well, since they have enough storage.
So the remaining points are content creation and consuming and sharing of devices. For device sharing, specialized boxes like FritzBox in Germany are much more suited than a full-fledged PC. A FritzBox, which you get as part of your DSL contract, offers a few LAN ports, wireless access point and a USB port for printer and USB hard disk where you can put all the media which is then accessable from all devices in the network. The web-based setup is very simple and still powerful; virtually zero administration is required and the power consumption is very low.
For content consumption there are devices like iPad with no boot time, with an excellent screen, which are transportable, consume very little power and the input possibilities are sufficient to enter a URL, write a short comment or chat. It is possible to connect these devices to your TV or HiFi set, so no PC is required here.
So now comes content creation. This is the area where PCs are to stay. Writing long articles, media production, coding, this is where PCs are strong and will stay for a while. But now there is a fact, that in social networks only 10% of the users are creating the content, the rest is consuming. Also these 10% are not creating all the time; they are also heavy consumers, therefore they will probably have two devices, one for consuming and one for creation, which they have to switch on, to wait the boot time, to start correct program and then start creating. So content creators will still buy a desktop, but it will be a tool for clearly defined tasks, for everything else there will be a consumer device.
Legacy does not mean that a device will disappear. Desktops and their operating systems are and will remain in businesses, they form the backbone of lot of companies and Microsoft will still remain one of the most valued companies and earn lot of money. There will still be lot of Windows versions to follow, but the excitement about them will not be much stronger than excitment of new version of AIX.
Windows vs. MacOSX vs. KDE vs. GNOME vs. BeOS wars are thing of the past. The future discussions and most exciting developments will happen on mobile devices. So watch out for iPhone OS vs. ChromeOS vs. MeeGo (and probably Microsoft if they get their act together with Windows Phone 7 and Slate). For Intel and AMD this development means that they should concentrate on server processors and very low power processors for the consumer devices, since this is the area with the most demand in the future.
What's a Multi-OS Platform and How to Deal with Such a Beast?
The author's native language is not English, so please forgive any grammar and/or spelling mistakes
First I will explain my definition of a multi-OS platform. A platform is an environment which an application is using to communicate and interact with the system and with the user. GUI, IO, and multimedia libraries are a part of a platform. Kernel API is a part of a platform. Applications, which are running on the same platform, have mostly the same look and feel and share the same global settings, which the user can adjust in the common preferences, and are able to communicate with each other. Quite often the applications offer interfaces so the user can write scripts, which are connecting these interfaces into a new application (think AppleScript or AREXX on Amiga). UI techniques like copy/paste and drag/drop are working across the applications; not only for unformatted text, but also for complex objects. From the programmers' view a platform offers a consistent environment with one main programming language (usually the language which has been used for the creation of the shared libraries) and several supported languages with bindings.
About 10 years ago it was fair enough to make the equation that an operating system is a platform. MacOS, Windows, AmigaOS, BeOS, Atari TOS; all these operating systems offered their own unique platforms, their own environments. UNIX was a bit different though; while the combination of POSIX-compliant kernel, X11, and Motif was a very common platform, other variants were also possible. Nowadays an operating system can have several platforms: MacOSX has Classic, Carbon, and Cocoa; Linux has KDE, GNOME, and GnuStep (among lots of others); and Windows has .NET and MFC. They all can be considered as native, but a lot of effort has been done to enable interoperability between the platforms running on the same operating system. One example can be the standardization efforts from Freedesktop.org to enable interoperability between KDE and GNOME.
Now let's talk about Multi-OS. Usually if an application is supposed to run on several operation systems you call it multi-platform. This term is applicable to the above equation 'one OS = one platform'. However, since we want to talk about platforms running on multiple OSes, multi-platform platform sounds a bit silly; instead I prefer the term 'Multi-OS'.
Let's talk about Multi-OS application first. So a Multi-OS application still has to interact with the system and the user, but the difference is, that it must be adaptable to several environments (native platforms), so there must be a kind of translator between the application calls and the current environment. In case of Mozilla and Firefox it is the XUL-Toolkit, in case of OpenOffice.org it is VCL. These toolkits are mini-platforms. The question is how well do they coexist with the native platforms. The answer is: not very well. When the application is launched, the whole mini-platform must be launched as well, which takes time and resources. The communication with the rest of the system can only be good if a lot of integration works has been done. The situation might become even worse if several multi-platforms have to communicate with each other; this happens only through the native platform, so only the least smallest denominator is understood by all three participants. Since the mini-platform is highly optimized for one particular application, it is quite hard to take this platform as foundation for other applications, XUL is used for Sunbird and Thunderbird, VCL is foundation for some OpenOffice.org forks.
Other toolkits are more flexible, so a variety of Multi-OS applications can be written using them. Exmaples of this are wxWidgets and QT (and to some extent GTK, which is available on different OSes. However, it is really optimized only for UNIX/X11). Applications, which have been written based on these toolkits, share the look and feel of the native platform (more or less), but still they are not communicating between each other or the native platform, so their integration is suboptimal.
A different approach is to use a virtual machine. A VM is also a kind of translator, but the difference is that it tries to provide as many own libraries as possible, while not relying on the libraries provided by the native platform. This way, a large variety of different applications can be created, which are all running in a VM. Two main examples are the JAVA platform and Mono.
The problem with this approach is that these applications feel even more alien on a native platform, despite the fact that with the introduction of SWT and Java Swing versions the look and feel of Java programs resembles that of the native platform. However, the weak point is still that communication between different programs inside and outside of the VM is not sufficient and there is no easy way to use parts of JAVA program for interaction with a different application. There is no language like Visual Basic or AppleScript which glues parts of different JAVA-programs together (maybe Groovy can become such a language).
Another point is that there are simply not enough JAVA-programs where such combinations would make sense. A platform is only viable if it has a large ecosystem, which means that a lot of applications have been developed for this particular platform - only then all communication worries about drag/drop, copy/paste, and connections of different application parts are justified.
So now finally we are coming to the Multi-OS platforms. Multi-OS platforms might also have the same weaknesses as a VM has, but the difference is that there is so much software available for this platform, so interaction with the native platform might not be perfect, because most of the required tasks can be done using the applications written for this platform.
Let's take a look at one of such platforms. A few days ago IBM announced Lotus Expeditor, based on the Eclipse Rich Clients platform. Lotus Expeditor runs on Linux, MacOSX and Windows. From the technical point of view it uses JAVA with SWT, but the ecosystem includes groupware Lotus Notes, instant messaging software Lotus Sametime and office software Productivity Tools. All the applications inside this platform are nicely integrated, interconnected and extendable with third-party plug-ins. Interaction with the native platform is not important in this case, as this is a platform for an office worker; most of the tasks he requires for his business are already there.
Before talking about the platform which might become the most important Multi-OS platform in the future, let's take a look at two other failed attempts at creating a Multi-OS platform. The first attempt was OPENSTEP, a platform which was available for Solaris, Windows, and in its incarnation as NextSTEP as its own OS, which was available on several hardware platforms. The reasons for the failure are quite numerous: OPENSTEP was too alien on a platform like Windows and it had its completely own look and feel, meaning it was too hard for a user of a native platform to get used to it. Not many applications existed for this platform and the company Next was too small to push it.
The second attempt was the AVA Desktop. After the introduction of the JAVA Desktop on Linux, Sun ported it to Solaris and was thinking loud about porting its components to Windows to achieve a similar working experience across several platforms, but this remained a wish, and these days Sun changed its business directions like socks, dropping this idea. However, maybe such discussion will appear again, when the Looking Glass project becomes more mature and will become a toolkit for a complete platform.
Now finally I want to introduce the most promising Multi-OS platform: KDE 4.0. What is so exiting about it? KDE4.0 is based on QT, which, as we've already seen, is suited for Multi-OS development. However, KDE 4.0 is much more. KDE consists of thousands of programs, many of them quite high quality, so if a user installs KDE 4.0 on his OS he has potential access to most of them. Technologies like Phonon help to develop Multi-OS applications, because all the access to multimedia codecs, which are different on every native platform, happens through the Phonon layer, so the application does not care if it is Quicktime on Mac, GStreamer on Linux, or DirectShow on Windows. Applications communicate with each other via DBUS. Applications itself are so called KParts, which can be combined into new ones. Copy/paste and drag/drop work across the platform. Look and feel can be configured to resemble the native platform, so a user can quickly get into it.
So what are the advantages and disadvantages to have a complete Multi-OS platform beside the native platform?
Advantages
1. Compatibility across all OSes. Using the same office suite, the same instant messenger, the same groupware regardless of the operating system allows sharing all data without compatibility issues.
2. Painless switch between different OSes. Once the user understands the basic look and feel of the platform he can use the same programs, which might look a bit different, but are called the same (all the Windows users I met were not able to surf the Internet on a Mac, because they had no idea that Safari and Camino were web-browsers) and behave the same. Again compatibility is very important in the case of switching platforms, because all user data can be transfered, without any potential loss through convertion.
3. Since KDE 4.0 is open source and provides tons of applications, an average computer user does not have to buy expensive computer software for basic tasks; hence he can save money for software which really demands special functionality of the OS, which a cross-platform application cannot provide.
4. More programers who are using different OSes can write application software which is available for all desktop users.
5. Multi-OS platform can be ported to less widespread systems like Haiku, AmigaOS, MorphOS, and SkyOS giving the users of these platforms lots of software for their daily work.
Disadvantages
1. While QT mimics quite good the look and feel of a native platform, it still can be recognized as alien, which is highly unwelcome especially by Mac users, who react very sensible to a different look and feel than Cocoa or Carbon. This is especially valid in times when Apple changes the look and feel of the platform (usually with a new MacOSX release) and QT still mimics the old version. But this consistency arguement is true, if only few applications have different appearance, but what if the majority of the applications has different appearance? Is it the common appearance then and the native applications start to look differently?
2. Multi-OS platform can offer only the least common denominator, so the applications cannot use special advantages of the particular OS. This is true, but we're not talking about highly specialized software packages, which really demand some special functionality of the OS, but such applications like an office suite. I'm not saying that everybody should use KOffice, but several different office suits can be created based on Multi-OS, which serve every taste. So a demanding user can use a suite which is as powerful as Microsoft Office, while a less demanding user can use a suite which is as design oriented as iWorks. There is no reason why such applications cannot be cross-platform; they do not require any special capabilities from the OS. The last office suite which was really optimized for an OS, was Gobe Production suite and even that one was ported to Windows.
3. But what about integration with the native platform which was so important in previous cases? Well, the close integration with the native platform is not required, because we have a whole ecosystem with plenty of applications, so communication outside the platform is becoming a nice-to-have and not an absolutely necessity.
Conclusion
We see that it makes a lot of sense to have a Multi-OS platform besides the native platform. Sure, there are disadvantages, but in my opinion most of the people can live with the fact that some applications behave slightly different then the rest. Imagine what will happen if KDE4.0 becomes such a winner like Firefox; a lot of people will use plenty of open source software, first on Windows, but then they see that they can easily switch to any other platform. This will be the moment when finally Windows will face a serious competition on the desktop.
About the author:
Currently I'm located in Bracknell, UK and I work for a major EDA company. If you want to find out more about me and my interests, please read my blog at kloty.blogspot.com (only in German), where you will find my profile and some other interests beyond operating systems.
Opinion: Why Solaris and MacOS X should unite?
First I will give short description of both OSes, so we can see the strong and the weak sides of them and see if the combination should eliminate the shortcomings and make the good points even better.
MacOS X
After running MacOS X several years exclusively on PowerPC processors from IBM and Freescale (former part of Motorola), Apple decided to make a switch towards x86 architecture, which is completed now. PowerPC version of OS is still developed, although no one outside Apple knows for how long this version will be feature complete with the x86 version. While the kernel of MacOS X is freely available, the complete OS costs about $150 per seat.
The kernel of MacOS X is called Darwin, it is open sourced, but it is not very popular among third party developers outside Apple. First reason is that the development itself is closed source, only the finished kernel is delivered by Apple, sometimes with months of delay. So the developer can study the kernel, write drivers for it, but has only little influence on the development of the kernel itself. The second reason is that the architecture of the kernel is quite unusual. It is an outdated Mach3 microkernel with a FreeBSD "personality". So after understanding of the concept, still hardly anyone can explain the reason (probably heritage of NextStep) and the benefits of having such architecture. Some people are talking about Frankenstein OS, which consists of parts somehow glued together and brought to life. The problem with such approach is that the concepts from other OSes cannot be applied to Darwin. That might affect security, reliability and scalability of the OS, because there is no experience from other OSes, so all these topics require extra effort and research. Virtualization is not even on agenda of the kernel developers. Darwin kernel has also received lot of negative press, because it lost several benchmarks against Linux and Solaris. Even if the benchmarks were not always correct, they still contribute to the negative image of Darwin, which decreases the amount of voluntary programers, who want to spend their time with this program.
The UI and user-land programming on the other hand are among the best in class. MacOS X was the first platform with 3D GUI acceleration, is very consistent and simple to use, but powerful. Lot of technologies like Quicktime, ColorSync, PDF-based compositing system, desktop-search system Spotlight, Core Audio and Core Image are built-in and are used by the OS itself and by the third-party programs. MacOS X can be used by not tech-savvy people without any knowledge of the command line. For command line-aware people, whole UNIX power is available. MacOS X also includes an X-Window server, so even UNIX-programs, which require graphical output can be ported to MacOS X. The programming of MacOS X is either possible using libraries and languages known from other UNIX platforms like TK, QT, Motif for libraries and C, C++, Perl for languages or MacOS X-native Cocoa or Carbon environments.
Main usage of MacOS X is creation and consumption of multimedia content, video and image editing, audio processing, desktop publishing, main focus is desktop user, who might not be aware of command line and should not be. MacOS X is used as server mostly in MacOS X environment. Most of the software has already been ported from PowerPC to x86 or is still in development. For PowerPC-only software there is an emulator available, which translates PowerPC code to x86 commands.
MacOS X is supposed to run on Apple computers only. Apple offers two lines of notebooks, three lines of desktop computers and one server line. Although it is theoretically possible to run MacOS X on an other x86 compatible computer from other manufacturer it is legally forbidden. Drivers exist only for devices, which are used by Apple computers, so running the OS on a computer with different devices, might cause problems. MacOS X has been already tried out for running on 8 processors (2 4-core Intel processors). However, there are no experiences how well it scales for this number of processors or even above (remember, Linux 2.2 was also running with 16 processors, but it did not scale well). The maximum supported amount of memory is 16GB.
Solaris
With the open-sourcing of the Solaris 10 version of its operating system, Sun has awaked new interest in it. Solaris 10 is running on SPARC and x86 processors both versions are feature-complete. There are attempts of porting it to PowerPC processors as well. Solaris 10 is available for free, however you have to pay for support.
The kernel of Solaris is BSD UNIX with some heritage from System V (according to the www.levenez.com/unix/ ). The kernel is very scalable (largest server offered by Sun contains 72 CPUs), secure (merged with parts of Trusted Solaris), reliable (Solaris Fault and Service Managers, Self-Healing technologies). Technologies like Containers for virtualization, DTrace for debugging and performance optimization, ZFS as high-end file system are still not available on other systems (or have been ported from Solaris). Performance-wise Solaris gets very good notes from several benchmarks. It receives lot of attention from the open source community. Sun releases very often previews of the next version of Solaris and works close with the third-party developers.
On user-land side, Solaris 10 is delivered with completely outdated CDE or Java Desktop 3, which is based on GNOME. This software is included in Java Desktop 3:
• GNOME 2.6
• Evolution 1.4.6
• Mozilla 1.7 browser
• OpenOffice.org 1.1 (basis for StarOffice 7 suite)
One can see, that this software is completely outdated (compared with e.g. SUSE Enterprise Desktop). There is no 3D-acceleration included, no desktop search. And nowhere on the net I could find a shipping date for Java Desktop 4. Moreover Sun will have problems sticking with further versions of GNOME, because it seems, that GNOME's high-level language will be Mono's C#, which is big rival for Sun's JAVA. User-land programming is done in JAVA, C, C++ with GTK+, QT or Motif libraries.
Solaris is heavily used in technical and science areas. It is still OS of choice for such tasks as EDA, CAD, CAM, CAE. It is also used as server OS for large databases, file and computation server or websites in mixed environments. The user should be very skilled in usage of the command line and understanding of UNIX. Lot of software, which is available for SPARC only has still not been ported to x86. There is no emulator available, which could translate SPARC commands to x86 (the only emulator demonstrated by Intel translates SPARC code into Itanium code, Sun tries to ignore that one). Currently there are no plans to abandon SPARC processor, but the roadmap for a workstation SPARC processor is not quite clear.
Solaris runs on wide variety of SPARC and x86 based hardware, especially servers from big companies. But it has to share the same problems as Linux with notebooks, where there might be no support for non-standard hardware build-in, or no open available documentation, so no open source drivers may exist. Sun also produces workstations and servers for Solaris.
Elimination of Shortcomings
Now it becomes clear that the weak side of the MacOS X is its kernel. Even if it is technologically interesting, it has negative image in the minds of developers, so there are only few people outside Apple, who are doing research and develop for Darwin. Lost benchmarks, complex architecture (and unknown security holes as a result), not proven scalability, lack of virtualization, self-healing, and a noncompetitive file system also doesn't make it system of choice for large server administrators. Additionally, though MacOS X is a UNIX system, there is hardly commercial software available, which comes from "old" UNIX platforms (e.g. Solaris).
The weak side of Solaris it is user-land. While making good shape on server, Solaris looses ground on workstation market, especially to Linux. Lot of workstation software packages, which were running on SPARC Solaris, are not ported to Solaris x86, but to Linux instead. Linux supports more hardware, it receives more frequent updates and ISVs (Independent Software Vendors) see no point in supporting two very similar (from the workstation point of view) operation systems on the same hardware. Unclear situation on the SPARC side (for the workstation) only increases the problem.
Strengthen the Good Sites
So what kind of advantages will the user have, if both systems will be merged?
- industry-proven, trusted, fast, reliable, secure, scalable kernel as fundament
- server OS with great manageability as known from MacOS X server
- unmatched technologies like DTrace, ZFS, Containers, Spotlight, Time Machine, Quicktime and so on in one package
- attractive UI with modern multimedia, office and communication software for former Solaris users
- programs from both worlds on one platform
- increased number of users, who might attract developers for porting their programs to this platform
- new buzz OS for geeks
- shared development resources
- ...
Is it just a dream?
Both companies Apple and Sun must change their politics to make such a dream happen. Apple has to accept that they do not have the full control over the development of the kernel, Sun has to accept that after open sourcing the whole OS, parts of it will be closed again (Aqua part, Apple will never open-source that one). From the license point of view such a merging is possible, I hope Sun will not do something stupid and put Solaris under GPL as they announced not so long ago. Both OS need to get some attention from users and developers for not being crushed from Windows on one side and Linux on the other. Sun should also declare SPARC workstations as depreciated, so not the complete OS should be ported to SPARC, but only the server relevant one. An emulator should translate SPARC code to x86. Aqua should run only on selected hardware, but kernel can run on a variety of x86 platforms. The Solaris port to PowerPC should be accomplished, but the quality doesn't have to match the x86 package, because, PowerPC platform is not the main business for Apple, they should do it only for the compatibility reasons. The interesting thing is that some of Solaris code has already been ported to Darwin, namely DTrace and there are lot of rumors, that ZFS will also find its way into the new Leopard. So why not make a big step and take the whole portion instead small crumbles.