The names are familiar: Firefox, Google Chrome and Safari. These relatively new browsers have been shaking the foundations of Internet Explorers complete victory over Netscape. These new browser are implementing fresh ideas and breaking out of the crusty browsers of the early 21st century. With the second browser wars in full swing, lets see where things stand and what’s coming.
Mozilla Firefox 3.6
Safari 4 was just released, and we have not heard any official statement from Apple what features Safari 5 will include, but looking at WebKit we can see what core browser technologies are being developed. WebKit has added geolocation support, HTML 5 draggable, and HTML 5 forms patterns and required attributes. What directly user visible changes will Apple make? We will have to wait and see.
Internet Explorer 9?
The next version of IE is still quite a ways out (3 years if you look at the release time-frame of IE 7 and 8 ) but it’s expected to boast many new HTML 5 features including native video and audio playback. Internet Explorer 9 should be quite a feature packed release with HTML 5 goodness, better performance, and improved standards support.
Opera 10 was just released this month but the team is working on Opera 10.10 with Unite. So far we’re waiting to hear more from the Opera team about what they are working on.
Google Chrome 4
Overall the competition looks quite healthy and browsers are being enhanced to be the Operating System of the future.
Vladimir VukiÄ‡eviÄ‡, the pioneer of bringing the well known OpenGL standard to the web, has just blogged using Firefox to render Spore creatures. Check it out, it’s a pretty impressive demo of this upcoming web standard.
Development on what would become WebGL started back in 2007 with Canvas 3D as an extension for Mozilla Firefox 3.0. Since then it has grown from a single project to an open web standard through the Khronos standards group. The standard is currently under development with a target release date of first half 2010.
Firefox isn’t the only web browser to be experimenting with WebGL, Google and Opera have also pledged to support this standard. The WebKit source code has recently picked up preliminary support.
The web has mostly stayed 2D, but with the advent of CSS Transforms and WebGL, the browser is moving into new territory. The web is evolving into the most important platform of the future.
Have you ever worked on a software project where you had no idea what would happen to other parts of the system if you made a code change? I have, but I have been able to ask developers on my team that know the system better than I do.
If it’s a larger software project and nobody on the team knows what a change would do, then it would be fair to say the software is overly complex and making forward progress is like wading through a swamp. Software projects, especially larger software projects absolutely must have code that is understandable. When designing software applications, a key component to the architecture is managing complexity to a workable level.
Managing complexity is the most important technical topic in software development. In my view, it’s so important that Software’s Primary Technical Imperative has to be managing complexity.
– Steve McConnell in Code Complete
Unless its a small project, no software developer can contain the design, constraints, and all the technical details in their head at the same time. Software must be made modular so that a developer can work on one section of code without worrying about the rest of the project.
How do you deal with complexity?
Break up the problem into sub-problems and sub-tasks so you don’t have to solve everything at the same time.
Contain the complexity to one part of the code.
Before you solve the complex issue take a step back and make sure you have to solve it that way. There might be a vastly simpler problem that you can solve that will still fulfill your requirements.
Tackle software complexity before it defeats your software project.
A fresh Snow Leopard (OS X 10.6) install does not have the mysql gem installed, and installing it fails because of missing header files:
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h