Category Archives: professional

Cross-platform concerns as Adobe abandons AIR for Linux

Adobe is giving up on AIR for Linux – at least, in a fully supported manner:

To support the variety of Linux-based platforms across PCs and devices, we are prioritizing a Linux porting kit for AIR (including source code), which Open Screen Project (OSP) partners can use to complete implementations of AIR for Linux-based platforms on PCs, mobile devices, TVs and TV-connected devices. We will no longer be releasing our own versions of Adobe AIR and the AIR SDK for desktop Linux, but expect that one or more of our partners will do so. The last Adobe release of AIR for desktop Linux is AIR 2.6.

This is a curious message. OSP partners include ARM, Intel, the BBC, Google, Toshiba and other big names; but which of these might build an AIR SDK and on what sort of terms might it be supplied? Or it is more likely that, say, the BBC will deliver BBC iPlayer for LInux in a bundle that includes the AIR runtime? Or is it just wishful thinking?

Adobe’s open source evangelist Dave McAllister has a go at defending the decision, pointing out that the growing client operating systems are Android and iOS, not desktop Linux, and that AIR for Linux accounts for only a 0.5% download share. However, Linux developers observe that Adobe’s AIR for Linux effort has always been half-hearted and tricky to install, especially on 64-bit installations. AIR itself is still 32-bit, as is the Flash Player on all systems, though there is 64-bit version in preview codenamed “Square”.

Most people run Windows or Mac desktops, and will not miss AIR for Linux. That said, decisions like this do undermine confidence in the Flash platform as a cross-platform proposition. The problem is, Flash technology is not open source and ultimately whether a particular platform is supported is a matter for Adobe, with all the commercial and political factors that implies.

The risk for Adobe is that when it abandons smaller platforms, it make open standard alternatives and in particular the collection of web technologies we call HTML5 more attractive.

Hands On with Appcelerator Titanium Studio

I spent some time today trying out Appcelerator’s new Titanium Studio. Titanium is a cross-platform framework that lets you compile apps for Apple iOS, Google Android, RIM Blackberry, and desktop operating systems. Its chief attraction is the mobile aspect, particularly as it claims to build “native apps”.

I am thoroughly bored of writing calculator apps, but having embarked on this this test case I am keeping going since it makes it easier to compare one with another. I started by writing it for Android on Windows. I had some setup issues, but once resolved it pretty much worked, though the development process was fairly painful.  There is no visual GUI designer and my calculator has quite a few buttons, so I ended up counting pixels and trying out my work by debugging in the emulator. Performing a build and running in the emulator is a lengthy operation, so this is a tedious way to work. Come back Visual Studio, all is forgiven!

I persevered though, and eventually had my calculator up and running on my HTC Desire.

image

The design could be improved; but it is good enough for my purpose. Unfortunately though the GUI is not as responsive as I would like. It is easy to lose taps if you tap a little too fast, which is a serious flaw in a calculator. In this respect, the Titanium build is better than the PhoneGap/JQuery app I built, but still not good enough for a production app.

Time to port to iOS. Here I ran into a number of difficulties. I installing Titanium Studio on a Mac, copied the project from Windows and tried to open it. Titanium Studio complained about the absence of the Android SDK and eventually froze trying to fully initialize the workspace. Force Quit, delete the project, and try again. This time I created a new project and just copied over the app.js file that has my source code. Titanium Studio was happier; but the app would not open in the iOS Simulator.

The problem: I have installed the latest Xcode and IOS 5.0 beta SDK. Even if you target iOS 4.x, Titanium is not quite compatible. However, my iPhone is still on iOS 4.3, and I was able to deploy the app to the device. Unfortunately the GUI was scrambled. This is how it looked:

image

Not good. Eventually I worked out the problem. On Titanium for Android there is no need to specify the height of buttons and labels; this automatically sizes to the content. On iOS though, if you do not specify the height it stretches the object from whatever you specify as top down to the bottom of the container.

I added height attributes to sort out the GUI, though I am still scratching my head over one issue. I specified a different value for the top attribute of a label and a button, but they were rendered at the same vertical position. Odd. I simply compensated for this and ended up with a workable GUI. Here it is on the iPhone:

image

The good news: this is by far the best performing of all the cross-platform solutions I have tried. I cannot out-tap it, and it would be fine in this respect for a production app.

Note that attempting to debug using the community edition raises this message:

image

No debugging without a subscription; a strong incentive to subscribe.

It is also worth noting that you can open the project generated by Titanium in Xcode. I wondered if that might shed light on the compatibility issues. It is an interesting thing to try, as you see the innards of Titanium’s code, complete with a number of reported issues.

image

I also get this:

image

Still, time to wrap up. I am impressed with the performance of my app on the iPhone, but disappointed on Android. On the other hand, the whole point of Titanium is to achieve cross-platform, otherwise you might as well use Objective C. Of course there may be ways to improve the performance; I just dived in and tried out the tool without chasing up possible optimisations.

Appcelerator has released Titanium Studio, IDE for cross-platform mobile development

Appcelerator has released Titanium Studio, an IDE built with Aptana, the Eclipse-based IDE which the company acquired in January. It is an interesting products because it lets you build cross-platform mobile apps for Apple iOS, Google Android, and Blackberry, as well as desktop applications.

I downloaded the community edition and gave it a quick try. The download includes the Titanium SDK and is around 150MB.

Titanium Studio wanted to grab file associations for CSS, JS and PHP by default – but at least it asked first

image

I noticed lots of Python scripts getting installed. The install completed and I was up and running.

Running the IDE requires login, which seems intrusive. You can avoid this by going offline.

image

I created a new empty Android 2.2 project and got an error on first run. Required jarsigner not found. Required javac not found.

image

I fixed this by adding the JDK to the path and setting Java_home to the JDK; previously my Adobe CS5 install had set this to its own JRE install.

Next, I built a hello world application.

image

It feels like a version 1.0 release. When I clicked Run it started the emulator but did not run the app for some reason. A second run after the emulator had opened worked. Code Assist seems a bit hit or miss. There it tooltip help for some keywords, but too brief to be much use, and pressing F1 is unrewarding. No visual GUI designer. Finally, and this is purely a personal thing, the editor has a black background – something I will be sure to change soon.

Nevertheless, this is a step forward for Titanium and presuming the apps perform well I think it is significant and worth investigating.

Easy database apps for iPad and iPhone with FileMaker Pro and Go

FileMaker Pro is a database manager from FileMaker Inc, a wholly owned subsidiary of Apple. It is a capable produce that has been around for over 20 years and is the dominant Mac-based database manager, though there is also a Windows version. FileMaker has evolved relatively slowly, with more focus on usability than on features. In comparison to Microsoft Access, FileMaker wins on usability and scalability, but Access has a more traditional approach based on SQL and programming with Visual Basic for Applications. FileMaker has a drag-and-drop script editor and support for AppleScript on the Mac.

Although the script editor is frustrating for someone used to writing code, it does work. As well as manipulating the data, you can set and retrieve local and global variables, perform loops and display custom dialogs; it is not as limited as it may seem at first.

A FileMaker database can be huge, with 8 terabytes specified as the theoretical limit. External databases are accessible through ODBC on both Windows and Mac.

The number of users supported by FileMaker is limited. The desktop product supports up to 5 concurrent users, and FileMaker Server up to 250 users. FileMaker has its own built-in security system, though FileMaker server can also authenticate against an external directory. Security is fine-grained, and you can even specify permissions for an individual record.

I have not looked at FileMaker for a few years, but renewed my interest when the company came out with FileMaker Go, a runtime client for Apple iOS. Given that FileMaker runs scripts you might have thought this would be restricted, bearing in mind this provision in the App Store guidelines:

2.7 Apps that download code in any way or form will be rejected

This is normally taken to prohibit runtimes like Java or Adobe Flash/AIR. Well, either someone decided that FileMaker scripts are not code; or there are special rules for an Apple subsidiary, which is reasonable enough. Anyway, FileMaker Go is in the App Store and does run scripts.

What this means is that you can create apps in FileMaker Pro and deploy them to iOS without going via the App Store. There are two models. FileMaker Go can open a file hosted by FileMaker desktop or server, in which case it behaves like a Mac or Windows client, or alternatively you can transfer a file to FileMaker Go to run locally. Transferring a file is easy using iOS launch service; essentially, if you can access the file via the internet or an email attachment, you can just tap it on the device and it will open in FileMaker Go. The advantage of running locally is offline use, whereas the advantage of the client-server model is that all users have the most up-to-date version of the data, and the database can be much larger. FileMaker is a real server application; this is not just file sharing. This also means that FileMaker must be running with the database open if you want to to use the client-server approach.

I tried FileMaker Go with a simple example and it works well. In essence it is delightful; you just open your database either locally or over the network, and it works. Here is a sample app on the iPhone 4:

image

That said, there are things that do not work, spell checking for example. It is also stripped of anything other than client features, so you cannot modify database structure, create new databases, or publish from the device to other clients. You also have to be careful with layout size. Most layouts designed for the desktop will need modification to work well.

There are a couple of issues. One is performance. It is just about bearable, but has that lethargic feel that you get with interpreted code on a relatively slow processor.

Another issue is synchronisation. If you want to work offline, how do you update your main database with any changes? The issue is little different with FileMaker Go than it is with a laptop, and it is discussed here. You have several choices:

1. Don’t synchronize, use client-server.

2. Treat your local database as read-only.

3. Use import and export. Existing records will simply be overwritten by imported ones.

4. Use a third-party tool. However the tool mentioned here, SyncDek, probably does not work with FileMaker Go since it needs to run a Java process on the client.

5. Roll your own. “FileMaker Pro has all the tools needed to create a robust synchronization system” says the guide; but it is non-trivial to implement this.

It is worth mentioning that FileMaker Pro also has an Instant Web Publishing feature that gives another route to mobile access and may perform better. There are pros and cons. The big one is offline, only available with FileMaker Go. Another is scripts. Some scripts work in Instant Web Publishing, but FileMaker Go is more compatible in this area.

I think this is significant for businesses where iOS devices are turning up. Many business apps do resolve down to forms over data, and this is is an easy way to deliver this kind of application to iOS users.

How is FileMaker pro as a programming tool? Just for fun, and because I have done it for other mobile development tools, I built a calculator in FileMaker. I do not recommend FileMaker for general-purpose programming; but it has the essentials, a form designer and scripting. Here is the result on an iPhone 4:

image

Oddly the biggest struggle I had was finding an easy way to display the input and result. In the end I added a field to the database just for this purpose. If a FileMaker expert could let me know a better way to update a text label on a layout via script, I would be interested to know.

The calculator is slow too, not for the calculation of course, but the operation of the user interface. Still, it does demonstrate that FileMaker Go is indeed able to download code and run it.

Update: I replaced the display field with a merge variable, which works better as it avoids focus issues and the keyboard popping up. Thanks to the commenter for the suggestion.

Mobile development research shows complex picture

Vision Mobile has published its report on mobile development. It is a detailed report and worth reading, though I would be wary about taking it too seriously since some of the results are puzzling. This is what the report is based on:

We spent the last few months quizzing developers and industry executives about the future of mobile. Our research included 20+ industry executives, along with 900+ developers from 75+ countries working on 8+ major platforms.

There are a few surprises. Android fragmentation is generally regarded as a problem, particularly since operators are slow or reluctant to release updates, but according to the report Android is the least fragmented platform after Apple iOS; the worst is Java ME.

Here are a couple of charts I found interesting. What kinds of apps are people paying for?

image

Source: Developer Economics 2011

It is games that dominate, but at 45% they are still less than half of the whole. Note that these stats are based on iOS sales tracked by App Annie.

In terms of monetisation, iOS is the most revenue-generating platform according to the report, and Android well down.

image

Source: Developer Economics 2011

Windows Phone is too small to make this list, but the report notes:

Windows Marketplace offers a trial version for applications, which doesn’t help developers monetise from impulse purchases – a
naive differentiation move on the part of Microsoft.

There is a fascinating section on winners and losers in the mobile platform race. There is almost no correlation between number of devices shipped and the number of apps published.

image

Source: Developer Economics 2011

Java ME is way ahead on devices shipped; but these are feature phones for a market that buys relatively few apps.

Finally, a look at the platforms developers are planning to use, and the ones that plan to abandon. Here is the first:

image

Source: Developer Economics 2011

I am not sure what to  make of this one. 621 developers were surveyed, and placed Android top, Windows Phone 2nd, Chrome OS third, and iOS level pegging with MeeGo in fourth place. I could almost believe it if it means which additional platforms, since many will already be developing for iOS. I wonder if the question was clearly put?

Next comes a chart of platforms developers are planning to abandon:

image

Source: Developer Economics 2011

Bad news for Symbian and Java ME, and also uncomfortable reading for HP with webOS and Adobe with Flash. However, only 285 respondents for this part of the survey.

There are harsh words for Adobe. The report gives several reasons why Flash is losing the battle for developer mindshare, including the abandonment of Flash Lite and the perception that “by focusing on large business partners, Adobe has been unable to cultivate momentum among developers in the long-tail.”

Microsoft is praised for its developer tools, but the decline of Windows Mobile and “lacklustre sales” for Windows Phone raise questions over whether it can create a viable market for mobile developer. The report is not always clear about when it means Windows phones of all kinds, and when it means the new Windows Phone 7+ platform.

The report shows that actual usage of Windows Mobile and Windows Phone by developers has gone down from 39% to 36% between 2010 and 2011, while Flash/Flash Lite has increased from 22% to 34%. It is rather hard to make sense of this alongside the other figures showing platform intent and abandonment intent and again it makes me wary of the report’s accuracy.

Frankly, it is hard to discern any safe bets in such a complex market, though Apple seems to be a consistent platform from a developer perspective – provide that the company does not decide to absorb the functionality of your app into iOS itself.

Full circle at Microsoft: from the early days of .NET to the new Chakra JavaScript engine

A discussion with a friend about the origins of Microsoft’s .NET runtime prompted a little research. How did it come about?

A quick search does not throw up any detailed accounts. Part of the problem is that much of it is internal Microsoft history, confidential at the time.

One strand, mentioned here, is Colusa’s OmniVM:

OmniVM was based on research carried out by Steven Lucco at Carnegie Mellon University. Steven co-founded Colusa Software in February 1994 in Berkeley, California. Omniware was released in August 1995. Colusa started working with Microsoft in February 1996. Microsoft acquired Colusa Software on March 12, 1996. Steven is currently a senior researcher at the Microsoft Bay Area Research Center.

OmniVM was appealing to Microsoft because Colusa had already created Visual Basic and C/C++ development environments for the VM. The VM was also claimed to be capable of running Java.

Microsoft took to calling the VM by the name of CVM, presumably for Colusa Virtual Machine. Or perhaps this is where the code name Cool came into being. Other names used at Microsoft include Universal Virtual Machine (UVM), and Intermediate Language (IL).

Microsoft’s Jason Zander, commenting to a story on this blog, does not mention OmniVM:

The CLR was actually built out of the COM+ team as an incubation starting in late 1996. At first we called it the "Component Object Runtime" or COR. That’s why several of the unmanaged DLL methods and environment variables in the CLR start with the Cor prefix.

Still, the timing pretty much matches. If Lucco came to Microsoft in 1996, he could have been part of an incubation project starting later that year.

In June 1999 Microsoft previewed the Common Executable Format for Windows CE:

A demonstration on Common Executable Format (CEF), a new compiler target within the Visual C++® development system for Windows CE, was also presented. This compiler enables cross-processor portability within a category of devices, such as Palm-size PCs or Handheld PCs. A single program executable under CEF is translated to the native code on either the host PC or the device, as desired. This capability eliminates the need for developers to recompile an application for every possible processor on a given Windows CE-based appliance before bringing it to market, thus enabling them to support every version of a device (Palm-size or Handheld PC) quickly and easily.

In 2000 I interviewed Bob Powell, then at Stingray, who told me this in relation to .NET:

There was an early version of the system for Windows CE called the Common Executable Format (CEF). The Pocket PC, which uses around seven different processor types, and which has many different versions of the operating system, is a deployment nightmare. This problem was addressed by the CEF, which was a test case. What is now in the IL is a more refined version of that.

Hmm, now that Windows is coming to ARM alongside x86, this sounds like it could be useful technology … though despite obvious similarities, I don’t think CEF was really an early version of the CLR. Maybe the teams communicated to some extent.

Now this is interesting and brings the story up to date. Lucco is still at Microsoft and apparently his team built Chakra, the new JavaScript engine introduced in Internet Explorer 9:

image

Steven E. Lucco is currently the chief architect for the Microsoft Browser Programmability and Tools (BPT) team. BPT builds the Internet Explorer’s Chakra Javascript script engine, as well as the Visual Studio tools for creating scalable, efficient Web client applications.

Right now, these are dark days for .NET, because Microsoft now seems to be positioning HTML and JavaScript as the new universal runtime.

It seems that the man who perhaps began the .NET Runtime is also at the centre of the technology that might overtake it.

Update: this post has prompted some discussion and the consensus so far is that the OmniVM acquisition probably had little to do with the technology that ended up as .NET. The one thing that is beyond doubt is that the COM team created the .NET CLR as Zander reported. I actually spoke to Zander at TechEd recently and we touched on his early days at Microsoft working with Scott Guthrie:

I was actually one of the original CLR developers. When Scott and I first started working together, he invented ASP.NET and my team invented the CLR.

The history is interesting and if the relevant people at Microsoft are willing to talk about it in more detail it is something I would love to write up – so if that is you, please get in touch!

Gang of Four member Erich Gamma joining Microsoft’s Visual Studio team

Microsoft’s Jason Zander has announced

that Erich Gamma will be joining the Visual Studio team as a Microsoft Distinguished Engineer

Gamma is one of the “Gang of Four” who shook up software development back in 1994 with the book Design Patterns: Elements of Reusable Object-Oriented Software.

The other authors are Richard Helm, Ralph Johnson and John Vlissides.

Gamma has previously been associated with Java rather than .NET. He was co-developer with Kent Beck of the JUnit unit test framework, and also worked on the Eclipse tools platform and at IBM Rational on application lifecycle management (ALM).

It is a prestigious hire and I would expect Gamma’s influence on Visual Studio to be a positive one, especially in areas like software quality, refactoring and ALM.

Considering Windows 8 as an HTML platform

Amongst all the fuss about whether Microsoft is deprecating Silverlight or even client-side .NET, it is easy to lose sight of the other angle on this. What are the implications of Microsoft embracing HTML and JavaScript as a new first-class Windows development platform? Here’s the quote again:

Today, we also talked a bit about how developers will build apps for the new system. Windows 8 apps use the power of HTML5, tapping into the native capabilities of Windows using standard JavaScript and HTML to deliver new kinds of experiences. These new Windows 8 apps are full-screen and touch-optimized, and they easily integrate with the capabilities of the new Windows user interface.

When Microsoft introduced IE9 with hardware-accelerated graphics, support for some key parts of HTML 5, and a new fast JavaScript engine, it was not only trying to recover ground in the browser wars. It also had in mind a new application runtime for Windows, for desktop as well as for web applications.

In order to achieve this, we can expect more hooks between the browser engine and the local operating system. There is potential security risk, but Microsoft of all companies will be sensitive to this and I would expect it to get the security right. The further implication is that some parts of a Windows HTML application will be Windows-specific. It is an “Embrace and extend” strategy, as I noted in this Register article back in September last year when former Silverlight product manager Scott Barnes broke the story of how the Windows team at Microsoft was favouring HTML and JavaScript above .NET.

The rationale for this is two-fold. First, I’m guessing that Microsoft thinks it will work better. Although .NET client apps are now commonplace, especially for custom business applications, problems like slow start-up and heavy memory requirements never really went away, though I would argue that in Silverlight they are almost eliminated.

Second, HTML and JavaScript is a universal programming platform. With the new model, any developer who can code a web page can also code a Windows app. Corporate VP Michael Angiulo said at Computex in Taipei:

Windows 8’s new application platform … is based on HTML 5, JavaScript and CSS, the most widely understood programming languages of all time. These languages form the backbone of the web, so that on day 1 when Windows 8 ships hundreds of millions of developers will already know how to build great apps for Windows 8.

These are both compelling arguments. Nevertheless, there are several reasons why making Windows an HTML platform might not be the instant hit that Microsoft will be hoping for. Here are a few:

  • Microsoft’s Visual Studio is .NET oriented. It does have a web design tool, Expression Web, which is OK but still falls short compared to Adobe Dreamweaver. Web designers tend to use Dreamweaver anyway, thanks to Mac compatibility and integration with other Adobe tools. Even Dreamweaver is not great as an application development tool, as opposed to a web design tool. Tooling is a problem, and it is fair to say that whatever goodies Microsoft comes up with in this area will likely be a step back compared to what it already has for C# or C++.
  • Standards are a mixed blessing if you are trying to sell an operating system. If Microsoft does such a good job of standards support that the same apps run with minor tweaks on an iPad and on Android, users may do just that. If Microsoft encumbers the standards with too many proprietary extensions, the universality of the platform is lost.
  • Windows plus HTML and JavaScript sounds a lot like Palm/HP WebOS, which has gained favourable reviews but has yet to take off in terms of sales. Otherwise, Palm would not have been taken over by HP.
  • The question of whether HTML and JavaScript will really take over app development is open. I certainly hear voices saying so. I interviewed Nitobi’s president André Charland, in charge of PhoneGap, and he makes a good case. On the other hand, App development today is still dominated by platform-specific development, Objective C for Apple iOS and Java on Dalvik, the Google Android virtual machine.
  • The standard in HTML/JavaScript app platforms is not Microsoft’s Internet Explorer, but WebKit, as used in iOS and in Google Android and Chrome. Microsoft did great work in standards support in IE9, but so far it has not stopped its browser share decline. Worldwide figures from StatCounter show Internet Explorer in continuing slow decline overall, and Chrome still growing and set to overtake Firefox in a year or so.

In other words, there is little evidence that embracing HTML and JavaScript as an app platform will ensure success for Windows 8.

That said, other factors count for more. Developers will go where their customers are, and if Microsoft turns out a version of Windows that wins substantial market share in the emerging tablet market as well as on traditional notebooks, the new platform will be a hit.

The risk though is that the market will continue to perceive Windows as an OS for desktop and laptop, and look to iOS or Android for mobile and touch devices. The dual personality of Windows 8 may count against it, if it means devices that are compromised by having to support both user interface models.

A pivotal moment for Microsoft as it attempts to escape its Windows legacy

image

Last year I wrote a piece for The Register on 25 years of Windows. I even ran up Windows 1.0 in a DOS box to have a look.

The surprising thing about Windows is not how much has changed in 25 years, but how little. The WIMP model (Windows, Icons, Menus, Pointer) has stayed the same. Inevitably, Windows was completely rebuilt during that period, in the form of Windows NT, but Microsoft was careful to make the user interface reassuringly familiar. Windows NT 3.1 looked the same as Windows 3.1, but did not crash so often. Windows NT 4.0 used the Windows 95 user interface. Further, as far as possible old applications still ran. In fact, Notepad on Windows 1.0 looks very like Notepad on Windows 7.

Then Apple releases the iPhone in 2007, and suddenly Microsoft has a problem. Apple demonstrates that it is possible to create a touch user interface, without a stylus, that really works. Apple does this by creating a new operating system, iOS, which is incompatible with its existing OS X used for desktops and laptops. Yes, much of the underlying code is the same, but OS X applications do not run. Nobody would expect them to on a phone; but then Apple does the iPad, approaching the screen size of a laptop, but still iOS, touch-centric, and incompatible with Mac OS X.

The advantage of Apple’s clean-room approach is that there are no compromises or fudges to make applications built for keyboard and mouse somehow work. iPhone and iPad are huge hits, and users seemingly do not mind sticking with OS X for their productivity applications like Microsoft Office and Adobe PhotoShop, and using the iPad and iPhone for web browsing and for apps that are more about consuming than creating – except that productivity apps like the iWork suite are now creeping onto iOS, and this together with the web application/cloud computing model may mean that OS X gets used less and iOS more over time; but OS X is not going away.

What about Microsoft? It has a big hit with Windows 7, but suddenly it all feels rather legacy. What about the new computing model which is mobile, touch-centric, and enjoyable to use in a way previously unknown in computing? One thing is sure: Microsoft cannot continue with WIMP. It has to break with 25 years of Windows and find a different user interface model.

2010, and Microsoft does Windows Phone 7. This is Microsoft’s iOS: same old Windows underneath, though based on the cut-down Windows CE, but otherwise a complete break from the past. The user interface is a new touch-centric effort called Metro and based on sliding tiles. The main thread of continuity for developers is its app platform based on Silverlight, which runs .NET code written in C# and Visual Basic.

You might have thought that Microsoft would follow Apple by using the phone OS for other form factors as well, and making Silverlight its core app platform for Windows (the cross-platform dream is long gone).

Instead, Microsoft embarked on a third strategy.

“We introduced a new platform based on standard web technologies”, says program manager Jensen Harris in his preview video. Windows 8 uses elements from the Windows Phone 7 UI, but driven by HTML and JavaScript rather than by Silverlight. Well, maybe you can use Silverlight instead; or maybe native code. Not everything is clear yet; but what Microsoft is choosing to focus on is its use of web technology.

Who will buy touch-centric Windows 8 devices? Microsoft’s problem: there is already a touch-centric OS out in the market, supported by countless third-party apps. As it has discovered with Windows Phone 7, it is not enough to do a decent alternative. So what, says the market, we already have iOS, and if we want something non-Apple, there’s Android. And WebOS. And Blackberry PlayBook.

The one thing Microsoft can do that others cannot is run Windows. Not new Windows, but old Windows. There is a reason why Windows 7 was the fastest-selling operating system of all time – most of the business world runs on Windows.

Therefore Windows 8 does both. There’s the new platform, and there’s the old platform, and you just swipe between them.

image

Windows 8 is a migration strategy. Is a mobile, touch-centric UI the future of client computing? Quite possibly, but in the meantime you have all this old stuff to run, not least Microsoft Office. Here is the answer: run both.

There are a few problems with this strategy.

First, while Microsoft will focus on the new HTML-based platform, in the real world people will buy Windows to run their existing Windows apps. That means they will need keyboard and mouse. Windows 8 OEMs will be fighting an old battle: how to make devices that run well as tablets, but also have keyboard and trackpad, and a competitive price. We have seen that approach fail with the old Tablet PC line and its swivel screens.

Alternatively, we will see touch-only devices and users will curse as they try to run Excel.

Second problem: Microsoft’s Windows team is focused on the new UI. The old one will likely be pretty much Windows 7. The success of Windows 7 was driven by innovations and improvements that matter whatever you run, rather than ones that you can only use if you are running apps built for the new platform.

A split personality means divided attention, and one or other or both will suffer. Is Windows 7 now frozen in time as the last of its line? That does look possible.

Third, what is the developer story? Hitherto, the Windows developer story has been pretty simple and single-minded. There is native code and the Windows API, or for the last decade or so there has been .NET. All-conquering C# has been the unifying language from desktop to server, with Silverlight bringing it to the browser.

Now Microsoft is saying HTML and JavaScript. Plaudits from the standards folk – who mostly do not run Windows and still will not – but confusion for the Microsoft-platform community.

That said, I will be surprised if Silverlight is not also an option for new-style apps, enabling Windows Phone apps to be ported easily.

Even so, there must be a reason for Microsoft’s emphasis on HTML and JavaScript for local apps as well as web applications. It does feel as if the one common thread to the company’s developer story has suddenly been cut, and for no good reason given that Silverlight fits perfectly with the new UI model.

Let me add, it is hard to see a future for the Windows Phone 7 OS, given what we have seen in Windows 8. It seems plausible that Windows Phone 8+ will use the same code as Windows 8, which is another reason to suppose that Silverlight will be fully supported.

I can see where Microsoft wants to get to. It wants to succeed in mobile and in the new touch-centric world, as the alternative is gradual erosion of its entire market and Windows ecosystem. Is this the best way, and will it work? Open questions; and the company has some tricky positioning to do, especially to its developers. The forthcoming Build conference will be critical.

Check out these images of Windows 8 – but where is Silverlight?

Microsoft’s Windows President Steven Sinofsky has shown off an early build of Windows 8 at the D9 conference in Rancho Palos Verdes, California. It turns out that the not-so subliminal messaging at the PDC conference late in 2010 was spot on. HTML 5 and JavaScript are at the centre of the new Windows, for apps as well as in the browser:

Windows 8 apps use the power of HTML5, tapping into the native capabilities of Windows using standard JavaScript and HTML to deliver new kinds of experiences.

says program manager Jensen Harris in his introductory video.

So what is the new Windows like? Here is tour with some screen grabs from the above video. I have deliberately included fingers in several of the shots, because the new Windows is touch-centric.

First, Windows 8 borrows from Windows Phone and has a Start screen built with Live tiles:

image

Live tiles, as on Windows Phone, are more than just icons; they can include notifications, video and animations. They are more like app previews.

Apps run essentially full-screen, as on Apple’s iPad:

image

You switch apps by swiping. Here is a screen caught mid-swipe:

image 

However, you can also have two apps on screen. One is the main app, the other is docked to the side:

image

A menu on the right shows Search, Share. Start. Connect and Settings. I am not sure what Connect does.

image

Believe it or not, this is Internet Explorer 10, with tabs along the top that preview each page (nice idea):

image

The on-screen keyboard looks like a big phone keyboard:

image

Dual Personality

So where is the rest of Windows that we know and love/hate? It is still there; run an “old” Windows app like Excel and presto, it is Windows 7, complete with task bar. This image looks blurry, which actually is a clue to how big and bold the UI shown for the “new” apps really is:

image

You can run old and new-style apps side by side, using the main/side app model:

image

Windows 8 will run on both Intel x86/x64 processors, and on ARM. Legacy app compatibility on Intel will be great, but on ARM applications will need to be recompiled. There is no x86 emulation layer; Sinofsky said that was too difficult to do. Windows 8 will not require any more hardware than Windows 7.

It looks like Microsoft has created an excellent tablet/slate UI which has the same relation to the iPad that Windows Phone 7 has to the iPhone. It borrows many of the ideas but adds some distinctive features.

The big difference: whereas Apple has chosen to continue a dual line, with desktop/laptop Mac in one stream and iOS for iPhone and iPad in another, Microsoft is combining the two.

At least, it is in Windows 8. What about the current Windows Phone OS, which is built on the Windows CE OS? Will it be replaced by a variant of Windows 8, possibly with “full Windows” option disabled? That is my guess, but there is a lot which Microsoft has not yet explained about its future product plans.

Another question: where is Silverlight and .NET? Clearly these technologies are still supported, at least on x86, since all of Windows is still there. In a report from D9, Sinofsky says:

The browser that we showed runs Silverlight and it will still run on the desktop

That does not answer the question: can developers build apps for the new Windows user interface (and Windows store) using Silverlight, or is it HTML/JavaScript only? What about native code?

I will be surprised if all these options are not available, but it was not explicitly stated at D9. The emphasis is firmly on HTML.

We are promised more details at the BUILD conference in September.