Category Archives: microsoft

Microsoft wants to buy Yahoo

Microsoft is proposing to buy Yahoo and has sent a letter to its board of Directors.

Could this combination compete more effectively with Google? Would the Yahoo culture accept such an acquisition? Maybe a minor point in the grand scheme of things, but Yahoo is built on PHP and employs PHP’s inventor, Rasmus Lerdorf.

The combination will create a more efficient company with synergies in four areas: scale economics driven by audience critical mass and increased value for advertisers; combined engineering talent to accelerate innovation; operational efficiencies through elimination of redundant cost; and the ability to innovate in emerging user experiences such as video and mobile. Microsoft believes these four areas will generate at least $1 billion in annual synergy for the combined entity.

Listening to the conference call right now.

Technorati tags: , ,

Unravelling the reasons for Vista audio glitches

Since Vista’s first release I’ve been puzzling over why audio in Vista is prone to glitches, when it is meant to be fundamentally better than it was in Windows XP.

I’ve posted previously on the subject:

Audio in Vista: more hell than heaven

Why does audio glitch in Vista?

Another Pro Musician gives up on Vista audio

I myself suffered from this. When I stuck a CD in my Vista PC back in November 2006, it would not play smoothly. I don’t recall ever having this problem before, even back in Windows 3.1 days.

The Guardian commissioned a piece on the subject which is published today. The research showed multiple reasons for Vista’s audio problems. It’s best to show these as a series of scenarios.

1. Consumer buying new Vista PC with on-board audio

The recommended audio driver type for Vista is called WaveRT. The architecture is better than with previous driver models; you can read an official paper on the subject here. If you look at the API, you’ll notice two interfaces, IMiniPortWaveRTStream and IMiniPortWaveRTStreamNotification. The second interface was added at a late stage in the Vista development cycle. According to CakeWalk’s CTO Noel Borthwick, this was because the original API, which lacked this event notification, was very inefficient. Although Microsoft fixed it, the on-board audio drivers came out using the old inefficient driver model for WaveRT. RealTek actually lists support for IMiniPortWaveRTStreamNotification as one of the fixes in its 1.82 driver update, released in November 2007 a year after Vista went RTM.

The fact that the on-board audio vendors provided WaveRT drivers at all was an indication of their early support for Vista’s new driver model. Vendors of add-on audio cards didn’t get round to this much later, or in some cases not at all.

2. Consumer with Vista PC and an add-on card

Although WaveRT is the recommended driver type for Vista, older driver types are also supported. At a higher level, the new WASAPI audio API also emulates older APIs like DirectSound and MME. The quickest way to come up with Vista drivers was to use these legacy APIs. The result is that drivers for add-on cards were probably using inefficient compatibility APIs.

In both consumer cases, this is about apps as well as drivers. Applications make a choice about which Windows audio API to use. In many cases that’s going to mean an emulated API.

3. Pro audio user with add-on card

The situation for pro audio users is different again. On-board cards lack necessary features for pro audio. Pro audio applications have long bypassed the Windows audio stack to reduce latency, using either ASIO or WDM kernel streaming. This avoids the problems mentioned in (1) and (2) above, because ASIO and WDM kernel streaming work the same in Vista as in XP. However, even here Vista is less satisfactory than XP, because the OS imposes a greater overhead, and because according to Borthwick there are bugs which only Microsoft can fix. An example is mentioned in this interview in Create Digital Music:

Peter: Some users have reported MIDI performance issues — specifically, jitter — under Vista. How much of an issue is this? What are the factors that cause it?

Noel: Both Cakewalk and Digidesign and Cakewalk logged this issue with Microsoft. The root cause of this problem was found to be in the WinMM.DLL and was due to an inefficient check being done on every WinMM API call.  It has been addressed in Vista SP1.

The issue itself was pretty severe and impacted MIDI timing on playback and recording. As compared to XP, in Vista we observed timing discrepancies as far out as 150 ticks. You could also run into cases where MIDI events were lost while playing.

Here’s one instance where SP1 definitely improves matters; nevertheless, Borthwick told me that SP1 is not a cure-all and some other bugs remain unresolved.

Myth-busting

Some people think that Vista’s DRM is responsible for audio problems. Nobody I talked to thought that was the case. It doesn’t apply in the common cases mentioned above.

What about moving the audio stack out of the kernel? Probably not an issue, certainly not in the pro audio case, where things work the same as before.

Fixing Vista audio

Vista audio is definitely improving. SP1, improved WaveRT drivers for on-board sound, decent drivers for add-on cards, all are happening. It probably will reach the point where it is better than XP in some circumstances, because there are genuine improvements in the audio stack. If you are reading this and get glitches, check that you really have the latest drivers and updates.

64-bit has the potential to be really good, though driver support is dire right now.

It’s still a sorry tale and I suspect has lost Microsoft a lot of momentum in the pro audio world, and also among consumer users like myself who were surprised and disappointed by glitching audio.

Preventable? Ultimately I feel this is a symptom of Vista actually being rushed (despite long delays), thanks to the famous reset. There’s also the question of why the WaveRT API wasn’t done right at an earlier stage, which (if the above analysis is right) could have saved much grief. Finally it seems that the emulation layers are just too inefficient.

Technorati tags: , ,

How to speed up Windows Vista: official and unofficial tips

Microsoft has published an article on speeding up Vista, aimed at general users.

It’s not too bad. Here’s the summary:

  • Delete programs you never use
  • Limit how many programs load at startup
  • Defragment your hard drive
  • Clean up your hard disk
  • Run fewer programs at the same time
  • Turn off visual effects
  • Restart regularly
  • Add more memory
  • Check for viruses and spyware
  • Disable services you don’t need

Still, it’s a bit scattergun. I prefer a two-stage approach to improving performance (same applies to a single application):

  1. Find out what is slow
  2. Speed it up, or leave it out

For example, the benefits of adding memory tail off after a certain point. Task Manager will tell you to what extent RAM is slowing down Vista. Further, adding memory beyond 3GB is pretty much wasted on 32-bit Vista, since the system can only address 4GB, and the BIOS plus devices will use a lot of the 4th GB address space. That said, a system that is critically short of RAM (in other words, constantly swapping out memory to the hard drive) is in my opinion broken and unusable. Adding RAM in such cases delivers huge rewards.

Uninstalling programs gives little performance benefit if they are not running (unless disk space is limited). The aim is to reduce the number of running processes, not entries in the Start menu.

Vista defragments your drive regularly, by default. The benefits are often rather small, so it would be equally valid to suggest removing it from the schedule, or scheduling it to run less frequently.

The advice to restart regularly needs examination. Yes, a reboot can fix a sluggish machine. But it shouldn’t be necessary, and I recall that keeping Vista always-on was intended to be a benefit of the OS. Yes, here’s a quote from Power Management in Windows Vista [ppt]:

  • Windows Vista promotes the use of sleep as the default off state

In the right circumstances, Vista can run for ages without any problem. I’ve actually had Media Center (Vista Ultimate) run for several months without any issues; though this kind of thing is not very green so that’s another reason to do regular switch-offs. Still, to my mind “restart regularly” is a symptom of some problem that should be fixed.

Turning off visual effects is reasonable advice, though once again it may not yield much benefit. I tried it on my system and was surprised how little difference it made. Reason: I am running with Aero and a decent-ish graphics card, and hardware acceleration seems to handle the visual effects rather easily. Once again, if it’s not the thing slowing you down, then removing it won’t speed you up. You can test this quite simply, though it is tedious. Try it both ways. Did it make a difference? Measure it if possible.

It really is worth using the built-in tools, like Task Manager and the Reliability and Performance Monitor, to see which processes are grabbing lots of RAM and CPU. One of the good things about Vista is that such tools are easy to find. Click Start, type “reliability”, and click the link.

I’d also like to see mention of some favourite candidates for slowing down Vista:

1. Outlook 2007

2. The indexing service

3. Anti-virus software

4. Windows Defender

Hmmm, at least three of these are from Microsoft. Perhaps they are too embarrassing to mention.

Finally, I suspect disk performance is a big factor in real-world Vista speed. The reason is that many apps are very talkative when it comes to disk access. Here’s something to try. Go along to the Systernals site and download process monitor. This gives a good picture of what the actual processes on your Vista box are up to. Note how many events are occurring, how many of them involve file i/o, and which processes are responsible. You will also discover a large part of the reason why Outlook 2007 is so slow.

PS Another article, also just published, has good coverage of swap files and ReadyBoost.

Web usability has a long way to go

First thing in the morning I often browse through recent blog posts and follow links that look interesting.

I noticed a free Windows 2008 book offer from Microsoft. Might be useful background for my review I thought – I’ll download it.

I lost count of how many slow, unresponsive pages I had to traverse before getting the book. Yes, I am persistent. I do recall having to sign in with Windows Passport (to the same account) twice – once to register for the book, and a second time for something called the E-Learning center, both times passing registration forms that I have seen many times before and do not intend to change. The final annoyance is that you cannot right-click and download the PDF; it is a Javascript link that opens in the browser. In my case I’ve set Adobe Reader to open outside the browser, which helps, but it is still an irritation.

It would not be so bad if this labyrinth of links were quick to navigate, but they are not. The problem in this case does not appear to be the download of large files (the PDF actually came down quickly once I got there), but rather slow server-side code resulting in web pages that seem to hang.

Next came an irony. Via Jimmy Guterman at O’Reilly I noticed a presentation by Edward Tufte on the Apple iPhone UI. Guterman warned that it was a large Quick Time file that would take “many minutes” to download. I clicked anyway. And waited. It was better than endless link-clicking, but still a poor user experience – no download thermometer, just a web page that seems completely unresponsive.

I agree with Guterman – the video is worth watching. Key points:

  • The content is the interface – remove “computer administrative debris” like buttons and toolbars.
  • Clutter is a failure of design
  • Add detail to clarify

Nevertheless, getting to the video is a lousy experience. The key here is that progress indicators transform the user’s perception of lengthy operations. I don’t just mean a spinning hourglass or the browser’s loading thermometer – we’ve learned that these are unreliable indicators, and that we may wait forever.

SQL Server 2008 delayed until third quarter 2008

Microsoft’s Francois Ajenstat says SQL Server 2008 will not be released until Q3 2008. He calls this “roadmap clarification”, Microsoft-speak for what most of us call a delay.

It’s embarrassing for the company, since SQL Server 2008 “launches” on 27th February, less than one month from today. What will actually launch is a feature-complete CTP (Community Tech Preview). Since Q3 can(and often does) mean September, there may be over six months between the launch and the release. It is an extraordinary stretch, especially since Visual Studio 2008, which has been available since late last year, “launches” on the same day.

Still, let’s look on the bright side. First, late releases are better than buggy releases; and the SQL Server team has a good record. Second, at least Microsoft has managed to control the dependencies so that it possible to stagger the releases without anything breaking (one presumes).

Polarisation

Slashdot takes the IBM line:

At this point nobody has the vaguest idea what OOXML will look like in February, or even whether it will be in any sort of stable condition by the end of March. ‘While we are talking about interoperability, who else do you think is going to provide long term complete support for this already-dead OOXML format that Microsoft Office 2007 uses today? Interoperability means that other applications can process the files fully and not just products from Microsoft. I would even go so far as to go back to those few OOXML files you have already created and create .doc, .ppt, and .xls versions of them for future use, if you want to make sure you can read them and you don’t want to commit yourself to Microsoft’s products for the rest of their lives

Alexander Falk, CEO of Altova, which makes a popular Windows XML editor:

I see the ISO vote as a non-event. In my opinion, the real-world adoption of OOXML is primarily driven by the ubiquity of Microsoft Office much more than any standards body…In terms of actual customer inquiries regarding need for ODF, we have not seen any interest from our customers…My advice to dev shops is to start working with OOXML as early as possible.

Technorati tags: , , , ,

Why Internet Explorer users get the worst of the Web

Microsoft’s Chris Wilson has a post on Compatibility and IE8 which introduces yet another compatibility switch. IE8 will apparently have three modes: Quirks, Standards, and Even More Standard.

Here’s the key paragraph:

… developers of many sites had worked around many of the shortcomings or outright errors in IE6, and now expected IE7 to work just like IE6. Web developers expected us, for example, to maintain our model for how content overflows its box, even in “standards mode,” even though it didn’t follow the specification – because they’d already made their content work with our model. In many cases, these sites would have worked better if they had served IE7 the same content and stylesheets they were serving when visited with a non-IE browser, but they had “fixed their content” for IE. Sites didn’t work, and users experienced problems.

In other words, so many web pages have “If IE, do this” coded into them, that pages actually break if IE behaves correctly. Alternative browsers will do a better job, even if IE is equally standards-compliant, because they do not suffer the effects of these workarounds.

Microsoft’s proposed solution is to make the supposed Standards mode a new quirks mode, this time frozen to IE7 compatibility, and to force developers to add a further meta tag to enable the better standards compliance of which IE8 is capable.

It actually goes beyond that. Aaron Gustafson explains the rationale for the new X-UA-Compatible meta tag which enables web developers to specify what browser versions their page supports. The idea seems to be that browsers parse this tag and behave accordingly.

This sounds uncomfortable to me. Versioning problems are inherently intransigent – DLL Hell, the Windows GetVersion mess – and this could get equally messy. It is also imposing a substantial burden on browser developers.

Has Microsoft made the right decision? Trouble is, there is no right decision, only a least-bad decision. Personally I think it is the wrong decision, if only because it perpetuates the problem. It would be better for IE to do the correct thing by default, and to support meta tags that turn on quirks modes of various kinds, or an option in browser preferences, rather than doing the incorrect thing by default.

Still, Wilson makes a case for the decision and has some supporters. Nevertheless, he is getting a rough ride, in part because the IE team has failed to engage with the community – note for example the long silences on the IE blog. Why is Wilson telling us now about this decision, as opposed to discussing the options more widely before it was set in stone, as I suspect it now is? Even within the Web Standards Project, some of whose members assisted Microsoft, there is tension because it it appears that other members were excluded from the discussion.

Another point which I’m sure won’t go unnoticed is that Wilson makes a good case for using alternative browsers. IE users get inferior markup.

Technorati tags: , , ,

Changing the motherboard or storage controller underneath Windows XP and Vista

Can you change your motherboard without reinstalling your operating system? Sometimes you can, sometimes you can’t. Last week I decided it was time to upgrade the desktop PC on which I do much of my work. The old motherboard was nearly three years old – an Intel 915PBL, which I purchased in order to run 64-bit Windows XP. At the time I was indignant because the BIOS swallowed a full 1GB of my RAM.

Technology has moved on, so I purchased an Intel DP35DP board (I still have a high regard for Intel’s manufacturing quality) and a core 2 quad Q6600 processor. I appreciate that this is now not quite leading edge, but it has been out long enough to be a reasonable price. So I backed up my files, performed the motherboard surgery, and switched on.

For sure I was not depending on being able to continue without reinstalling the operating system. This is not a supported procedure. On the other hand, I figured it would be interesting to try; and so it proved. After all, I’ve had enough trouble installing things like Visual Studio 6 and Adobe Creative Suite 3, not to want to repeat the experience.

My desktop PC is a little complex. There are three SATA drives and three Windows installations. One is Window XP x64 (the original installation); one is Windows XP Pro 32-bit; and one is Windows Vista Pro 32-bit. I work mostly in Vista. Initially, none of these worked with my new motherboard. Attempting to boot Vista caused an immediate restart, and both XP installations blue screened.

The key problem is the storage controller. Typically, you will get a STOP 0x0000007B if your new motherboard has a different storage controller than the old one. The above link is to a Microsoft knowledgebase article for Windows XP, and you will see that it suggests two solutions. One is to perform an in-place upgrade, also known as a repair install. This is where you reinstall Windows to the same location, and it sorts out the device drivers and other critical problems without blowing away your documents or applications. The other is to do a new clean install – not really a fix, more an admission of failure.

Vista no longer supports repair installs. More on this later.

Note that the main issue is getting Windows to boot. Once it does boot, you will likely get all sorts of device errors, but these can usually be fixed. Fixing stuff if you cannot boot at all is more challenging.

Health warning

Since you are still reading, I assume you are in one of two categories. Either you are inquisitive about the innards of Windows; or you have a problem because Windows will not boot. Here’s my disclaimer. The steps I describe below are not supported, guaranteed ways to rescue Windows; and if you experiment with a working Windows installation, you could break it. If you try any of them, it’s at your own risk.

The AHCI problem

Intel’s new boards usually have three settings for the SATA controller. One is IDE, which is best for legacy compatibility. One is AHCI (Advanced Host Controller Interface), which is best for features. The third is RAID, which combines AHCI and a sort of hardware RAID (sometimes known as fakeRAID because it isn’t really hardware RAID, but never mind). Intel boards used to default to IDE, but this one defaulted to RAID which is now Intel’s recommendation. Even if you only have one drive, you can easily set up RAID later if you start with that setting. If you plan to install Linux, you might be better off with plain AHCI.

Repair Install on XP x64

For my first experiment, I tried a repair install on XP x64. It did not go well. There was some minor awkwardness. Intel supplies the crucial RAID drivers on antiquated media called floppy disk. You need this during Windows setup (press F6). However, the motherboard has no Floppy Disk connector; you have to use USB. Luckily I have a USB external floppy which came with a laptop some years ago, so that bit worked. Unfortunately, the repair install seemed to hang on a screen which said “Installing Devices” and promised to complete in 35 minutes. I left it overnight and it said the same thing in the morning, though it had not technically crashed and who knows, perhaps it would have completed one day.

If you ever hit this issue, read this thread. What you have to do is to restart the machine and press F8 to get the advanced startup options. Timing this may be tricky, since setup configures itself for immediate startup. If you get really stuck, find some way to edit boot.ini to insert a delay. Once you have pressed F8, choose the Debugging mode. The repair install will now complete within a sane time. There’s another solution discussed in the thread I’ve referenced above, which involves identifying which device is causing the hang and then preventing setup from attempting to install it; but the Debugging option worked fine for me.

As it happens, I didn’t discover this fix until later. I got diverted by 32-bit XP.

Fixing 32-bit Windows

After getting stuck on XP x64, I took a look at 32-bit XP. The X64 repair install had mucked up the boot menu; but that’s easy to fix from a recovery console. Being a little discouraged, I decided to try the legacy IDE settings for the SATA controller. Good old XP Pro then started, no hassle, no need for a repair install. It detected various new devices, and I ran the Intel driver utility from the CD that came with the motherboard. I also had to reinstall the NVidia graphics driver. My first success.

First attempt with Vista

Vista on the other hand still would not work. It is less amenable than XP to controller changes; I gather this may be something to do with speeding up the boot process by disabling “unnecessary” drivers. Anyway, it blue-screened irrespective of the setting for the SATA controller. It was then I discovered that Vista has removed the option for a repair install. What you do instead is to boot from the setup CD or DVD and choose the option to “Repair your computer”. Then it runs a Startup Repair wizard which tries to fix your Vista. I tried this on all the SATA settings, and it failed. On the first try it thought it might have succeeded and invited me to restart Windows, but it still blue-screened. On subsequent attempts the wizard made some lengthy disk-checking efforts only to inform me that I had a corrupt volume and should give up.

I’m not impressed with Startup Repair. I think XP’s Repair Install is brilliant, and Vista’s Startup Repair is brain dead. I’ll explain shortly.

You can do a sort-of repair install with Vista by “upgrading” an existing install – but you can only start an upgrade from within the instance of Windows that you want to upgrade. In other words, if you can’t boot then this is not an option. Do NOT do an over-the-top clean install. You will lose all your settings.

At this point I nearly gave up and did a clean install of Vista. I still had the nagging thought that if only I could get Vista to load the right storage controller driver, it would probably start up. So I left it for the moment and went back to 32-bit XP, my success story. I wanted to discover if I could switch to the SATA RAID option without breaking it.

Switching an installed Windows OS to AHCI or RAID

This thought led me to an illuminating discussion. This explains that if you want to switch Windows to use a different storage controller, for which the driver is not installed, you do so by manually copying the driver to system32\drivers; and editing the registry so that Windows can use the new driver when booting. For this to work, you need to know the hardware ID of your controller. This is something like:

PCI\VEN_8086&DEV_2822&CC_0104

One way to find this ID is to clean install a second copy of Windows to a temporary location, and then look at the storage controller properties in device manager. Alternatively you can experiment with some likely values, or try several at once. The discussion I’ve linked provides some reg files which show the critical entries.

This looked interesting, so I followed the steps in the first post of the thread, shut down, then restarted with the BIOS setting changed to AHCI. Success – XP Pro started, and I was able to run Intel’s driver setup to clean up the installation.

Getting more confident now, I found the hardware ID for the RAID controller (the hardware ID changes when you change the BIOS setting) and added that to the registry. The actual driver is the same. Success again – XP now started using the Intel Matrix Storage RAID.

XP was done now, especially as I also discovered the fix for x64 described above. But Vista, the one that mattered to me most, was still broken. Nevertheless, I now had a much better idea of how to fix it.

Offline registry editing

Now is the moment to mention a little-known feature of the Windows registry editor. 99% of the time, you edit the Windows registry from within a running instance of Windows. However, the registry editor has an entry in the File menu called Load Hive. The way this works is not particularly intuitive. You select the root of HKEY_LOCAL_MACHINE, then choose Load Hive and navigate to a registry database file that is not part of the active registry. In my case, the hive I needed to load was SYSTEM, located in System32\Config. You may possibly know this if you have ever had to recover Windows when it will not boot because of registry corruption. When you click OK to load the hive, the registry editor prompts you for a key name. Enter something like “Vista Repair”. The loaded hive then appears as a sub-folder under HKEY_LOCAL_MACHINE.

There is no Save; simply make the edits you want, then select the top level of the loaded hive – eg. “Vista Repair” – and choose File – Unload Hive.

This had to be worth a try. I booted my poorly machine into Windows XP, then went to another machine on the network running Vista. I copied the SYSTEM hive from the broken Vista across the network, made a backup, then loaded it into registry editor. Finally, I manually made the changes pretty much as in the reg file used to migrate XP to a new storage controller, though what I actually did was to pattern the changes on an existing storage controller entry in the working Vista registry. Note that an offline registry has no “Current Control Set” hive. This is actually a runtime link to ControlSet01. So, for offline editing, you edit ControlSet01.

I also made the normal registry fix for enabling AHCI on Vista. Then I unloaded the hive and copied it back to my broken Vista. I also added the actual driver to system32\drivers, of course. In my case the driver is called iastor.sys, from Intel’s floppy disk.

Vista boots

The result was amazing. I restarted the PC with the new motherboard, and instead of a blue screen I got:

Press CTRL+ALT+DELETE to log on

Nothing much to add now. I logged  on, installed various drivers, and everything works. I have a quad core CPU:

and an Intel RAID storage controller:

Vista itself seems fine. It is solid and significantly faster than before, as you would expect.

Thoughts on Vista Startup Repair

Despite my success, I’m not impressed with the Vista Startup Repair. First, why couldn’t Microsoft’s wizard do what I did manually? Second, why has the excellent Repair Install option disappeared from Vista? Vista’s repair and restore options seem to presume that the hardware has not changed; yet I’d have thought a replaced motherboard would be one of the more common scenarios where you would want to repair a Vista installation.

The whole business of changed hardware is something of a dark secret in Windows backup and restore. In an enterprise environment it is not so bad, because you have redundancy, and a single failed machine (server or workstation) should not be a problem. Something like Small Business Server is different, because typically this is a single, business-critical machine. If your 2-year old Small Business Server box disappears in the night, and you purchase a new box and stuff in your backup tapes, it will not necessarily be easy to restore.

Still, I must also credit Windows with considerable resilience once it can find a working storage controller driver. It pretty much sorts itself out after that.

Coming next: a clean install of 64-bit Vista. It makes sense.

PostScript:

Anyone interested in this esoteric topic is also advised to read this article on ArsTechnica and this related thread. Note the advice on removing non-present devices from device manager. There’s also this Microsoft article (non-Vista) which is a variant on the Repair Install. Let me also note the main area of uncertainty regarding repair installs: it may not be safe with regard to recovering a fully patched system. In principle you can re-apply service packs or hotfixes, but what if Windows Update thinks a hotfix has already been applied when in fact it has been undone? It’s a good question and I’m not sure at the moment what the answer is.

The Microsoft article above also makes an interesting point about OEM licenses. If you replace the motherboard with something other than the same model, it is considered a new computer and OEM licenses cannot be transferred.

Sun gets a database manager, but Oracle owns its InnoDB engine

Sun now has a database manager. It’s been a long time coming. Oracle has … Oracle, IBM has DB2, Microsoft has SQL Server; it’s been obvious for years that Sun had a gap to fill. Now Sun has MySQL.

This is interesting to me as I was a relatively early user of the product. I didn’t much like it. It was missing important features like transactions, stored procedures and triggers. I still used it though because of a few appealing characteristics:

  • It was free
  • It was very fast
  • It was lightweight
  • It was the M in LAMP

I should expand slightly on the last of these. The great thing about MySQL was that you did not need to think about installation, PHP drivers, or anything like that. It all came pretty much by default. If you decided that you could not bear MySQL’s limitations, you could use Postgres instead, but it was more effort and less quick.

The ascent of MySQL is a sort of software development parable. Like PHP, MySQL came about from one person’s desire to fix a problem. That person was Michael “Monty” Widenius. He wanted something a little better than mSQL, a popular small database engine at the time:

We once started off with the intention to use mSQL to connect to our own fast low level (ISAM) tables. However, after some testing we came to the conclusion that mSQL was not fast or flexible enough for our needs. This resulted in a new SQL interface to our database but with almost the same API interface as mSQL. This API was chosen to ease porting of third-party code.

Why did MySQL take off when there were better database engines already out there? It was partly to do with the nature of many LAMP applications in the early days. They were often not mission-critical (mine certainly were not), and they were typically weighted towards reading rather than writing data. If you are building a web site, you want pages served as quickly as possible. MySQL did that, and without consuming too many resources. Many database engines were better, but not many were faster.

MySQL today has grown up in many ways, though transactions are still an issue. To use them you need to use an alternate back-end storage engine, either InnoDB or BDB. BDB is deprecated, and InnoDB is included by default in current releases of MySQL. InnoDB is owned by Oracle, which could prove interesting given how this deal changes the dynamics of Sun’s relationship with Oracle, though both MySQL and InnoDB are open source and published under the GPL. Will Sun try to find an alternative to InnoDB?

While I agree with most commentators that this is a good move for Sun, it’s worth noting that MySQL was not originally designed to meet Enterprise needs, which is where most of the money is.

Update: as Barry Carr comments below, there is a planned replacement for InnoDB called Falcon.