Tuesday, December 23, 2008

Future of Windows

As Microsoft is working on its hype of Windows 7, after the unsuccessful release of Vista, the question comes up what the future of Windows will be. You probably have seen some screen shots of how Windows 7 will look like. There are some pretty cool UI elements but will this help Microsoft on making Windows 7 a success? Time will tell, however what Microsoft should be focusing on (and probably is), is the future of the OS.

In order to understand what the future of the OS and Windows will be, we will need to look at the history of the (Microsoft) OS and look back how it has evolved. It's not up to me give you a history lesson, however my intention is to explain how I have seen it evolve.

When I first starting with computers (the commodore and apple ][ era), the OS was actually a tool to make use of the hardware and start applications. The most famous OS was actually DOS and as the name mentions it was a DISK Operation System. It was really low level and user unfriendly (that is why tools like Norton Commander, etc existed).
As the computers became more powerfull, Windows 3.x was launched, which actually kicked off the PC market. The power of the graphic user interface in combination with the support for old DOS applications and the ability to "multi"-task made it popular. The multitasking (which was actually the ability to switch between running applications) also introduced many people to the clipboard and the famous control-c and control-v key combination. From a developers perspective, there was now uniformity on controls, application interface, hardware independency which was now all taken care of by the Windows OS. Remember the time in DOS when each program had its own graphic driver (EGA/VGA) and printer driver (HP codes, etc). Now these days were gone and applications became uniform and easy to develop (and to use). A big boom on software came to the market and Windows became the standard.
Windows 3.11 added the network support which allowed the users to connect to each other (and connect to internet).

Windows 3.x still felt like a shell on DOS and DOS was still very important for fine tuning your system (autoexec.bat and config.sys files). The come of Windows 95 and 32 bits processors killed the DOS era. With Windows 95, Microsoft delivered a true graphic OS which was not an addon to an existing lower level (D)OS. In combination with developments like Internet and Windows NT Server, it ruled the OS market until Windows XP.

Windows 98 and ME felt like minor upgrades without real improvements and these even felt less stable. Personally, my home desktop has been on 95 until XP was released (in the meantime my business computer was Windows NT/2000 workstation).

Windows XP, is still the ruling OS because it does what the users want: Boot quickly, best hardware and application support, connect and surf the internet.

So if we need to summarize what happened with the OS:
  • Start computer, start applications and locally store data (DOS)
  • Easier user interface and switching applications (Windows 3.0)
  • Network connectivity, allowing easily sharing of data (Windows 3.11)
  • Multitasking and a true new interface with working with computers. End of DOS. (Windows 95)
  • Improvement of user experience (multimedia/video/gaming) in combination with new hardware and server systems (Windows XP)
As we can conclude from the above list, with each step there was an essential improvement and need for an OS update. If we look at the Vista situation, there was no trigger for the Windows community to start using Vista. Besides that it had issues with existing hardware, had high hardware requirements, was incompatible with business critical software and probably because of the reasons mentioned earlier, it was slower (compared to XP). The improvement Vista brought (like better security, fancy user interface effects like aero) was not enough to convince the majority of XP users to switch to Vista. Actually there is nothing XP can't do what Vista can't do (even all the cool gimmicks).

Having looked backed at the past, we also now have to look to the current situation and the future to try to vision what will happen to Windows. What is happening is that more and more people are switching to Windows alternatives, like Mac OSX and Ubuntu. There are a couple of reasons for this, but I think the most important reason is the independancy on the OS and OS specific applications. If we look at the average user and try to summarize what the main activities are, we will probably get the following list, from most to less time spent:
  • Surfing internet
  • Communication: email, instant messaging and voip
  • Gaming
  • Store and organize digital media like photo and video (and share them)
  • Write documents (personal use or blogging)
  • Easy calculations (based on spreatsheets)
  • Watch media (movies, tv series, etc)
Personally, I have to say that, if I have no internet available on the computer, the machine feels dead and there is no trigger to use it. Having a browser and internet almost allows all the above to be accomplished (except Gaming, while the internet connectivity is very important though). So as long as we have a good browser and a machine which allows us to do the above, most people really don't care about the OS anymore. I have been using Ubuntu and Mac OSX recently and to be honest, i didn't miss anything (especially on Ubuntu). In the future when the connection speeds and the html techniques will become better and extended, almost all we need or will use will be running in the are going to be will be on the browser.

Coming back to the actually subject: the future of Windows. I truly believe that Microsoft should focus on 4 items (besides the obvious like networking, etc):
  • Hardware support, allow the hardware developers to easily create drivers for the OS
  • Speed, extreme fast booting without any bloat and a very reactive system
  • Low level speedy graphics (directx on the OS level)
Besides this they should provide the OS with the fastest HTML/javascript rendering engine.
If Microsoft can achieve this, they will regain and keep their dominance in the OS market, otherwise I think they will loose the OS battle in the long term.

Sunday, December 21, 2008

Tables: The Next Evolution in CSS Layout is Now

After reading an excellent article at Vitamin about using CSS tables and how it will be next evolution for design once IE 8 is released. But I think we already should start using it, because with the help of jQuery, we can easily modify the DOM to emulate the CSS tables in IE 7 and below.

The trick is to replace the CSS table elements to real table elements for IE, which can be very easily done and the results are amazing. See my example.

Actually the code convert the elements to tables is the following:

$(document).ready(
function() {
// check for ie (it would be better to check for IE version too in the future)
if( jQuery.browser.msie){
// update the cells....
$('#container > div > div').each(
function(){
$(this).replaceWith('<td class="'+$(this).attr('class')+'">'+$(this).html()+'</td>')
}
);
// update the rows
$('#container > div').each(
function(){
$(this).replaceWith('<tr>'+$(this).html()+'</tr>')
}
);
$('#container').replaceWith('<table id="container_table">'+$('#container').html()+'</table>');
}
}
);



What the code actually does is converting the div elements containing the display: table-cell to td elements and the same for row (to tr elements) and finally the container div to a table.

To be honest, I am amazed with the results myself and for now on I will start using this technique for all my projects.

See below for the screenshots (as you notice, they all look the same)

Firefox:


Safari:


IE 7:


Of course what I have done here is a quick test whether it was possible. The code I have presented is just an idea and it can be optimized and generalized for common use.

Good luck on using the CSS tables!