The Apache Ivy project, now a subproject of Ant but formerly a product of Jayasoft, has released version 2.0 of its dependency management solution for Ant build files. It is the first stable release of Ivy since becoming a full-fledged subproject of Ant.

The release features increased compatibility with Maven 2.0, improved cache management, a new "packager" resolver, and better handling of relative paths. Ivy has become an excellent tool for those unable (or unwilling) to move to Maven, but unable to live without dependency management (though there is also Maven's own Ant tasks).

Ivy 2.0 is available for download here. The IvyDE Eclipse plug-in (essentially an editor for ivy.xml files and a classpath container for your dependencies) is also available through the update site:

Travis Leithead, a Program Manager for Internet Explorer at Microsoft, writes in a recent blog entry about DOM prototypes in IE 8. In brief, IE 8 is the first version of the browser to expose the JavaScript constructors and prototypes for all DOM objects. This allows JavaScript developers--especially framework developers--to extend the functionality of DOM objects. It is not hard to envision extending IE 8, for example, to implement the (currently not implemented) getElementsByClassName method of HTML 5, which allows you to get all elements of a given CSS class. Travis gives an example of how to do so here:

Travis also details IE 8's support for JavaScript getters/setters (currently supported in Firefox, Safari, and Opera) in the article here. Getters and setters are a special feature for defining non-trivial object properties such as innerHTML while retaining the same familiar JavaScript syntax for referencing or assigning the property. The syntax for defining a property is specified by the defineProperty method of ECMAScript 3.1 (aka "JavaScript Harmony"):

The combination of these two new features should make IE 8 far more amenable to extensibility than any previous version of Internet Explorer. This should help framework developers bridge the gap between browsers in a much less painful way, and make life easier for the average JavaScript developer.

Setting a land speed record for transition from Beta->RC->Release, the jQuery project has released version 1.3 of its popular JavaScript framework. All in all, it is a major release for the project and could have easily been dubbed "jQuery 2.0".

The important features of this release are:

A rewritten and very fast CSS selector engine: Sizzle. The Sizzle code base is stand-alone has been donated to the Dojo Foundation in an effort to encourage other JavaScript libraries to adopt it.

"Live Events" (also referred to as Event Delegation): a new API for binding events to current and future DOM elements. The live() function is used to bind an event to all matched elements, including future matched elements that are added to the DOM. The die() function removes the bound live event.

A rewrite of jQuery's event handling. The introduction of a jQuery.Event wrapper object brings jQuery's event model in line with W3C standards and makes events work smoothly across all browsers; the wrapper also allows arbitrary data to be associated with events. All triggered events now "bubble up" the DOM tree, but progress can be halted via a stopPropagation() function.

A rewrite of HTML injection (e.g., the append, prepend, before, and after methods) for much greater speed (heavy use of DOM Fragments).

A rewrite of the offset() method for better cross-browser compatibility as well as greater speed.

No more browser sniffing. As of 1.3, jQuery no longer uses any form of browser/userAgent sniffing internally. Instead, a technique called "feature detection" is used to simulate a browser feature (or bug) internally to see if it exists or behaves as expected. All of these checks are encapsulated in the jQuery.support object.

Anyone doing an upgrade to 1.3 from previous versions should note there are some backward compatibility issues which are noted here (under "Changes"). The full release notes are here.

In other news, there is a new API browser for jQuery (written by Remy Sharp), which is available online or as an AIR application. The project has also decided to join the Software Freedom Conservancy and will continue to be developed under its auspices. John Resig elaborates on the reasons for the move in his blog entry.

The latest version of the Scala language has been released. Version 2.7.3 contains a number of bug fixes, especially in the actors library, and performance optimizations. A full list of issues resolved can be found here in the release notes.

The 2.7.3 distribution can be downloaded here. The corresponding Eclipse plug-in has also been updated and can be downloaded via its update site at:http://www.scala-lang.org/scala-eclipse-plugin

jQuery 1.3 has officially reached Release Candidate status. There are no release notes for this release, but for those who haven't been following the beta releases, you can read more about the changes in 1.3 here and here.

The Firebug 1.3 plug-in for Firefox 3.0.x has been released. The release features new tracing capability, used mostly for internal debugging but used to drive improvements in the Net panel as well. There are also numerous bug fixes. The full release notes are here.

The Burton Group's Anne Thomas Manes wrote a provocative post yesterday declaring that SOA (as a term at least) is dead. It will, of course, be replaced by...(drum roll, please)...SERVICES! Hmm...isn't that what the "S" in SOA stands for? To quote Manes:

Once thought to be the savior of IT, SOA has instead turned into a great failed experiment—at least for most organizations. In the beginning, the forecast for SOA was to reduce costs and increase agility on a large scale, but except in rare situations, SOA has not delivered those promised benefits.

But, take solace, consultants everywhere! For all is not lost...

SOA is survived by its offspring: mashups, BPM, SaaS, Cloud Computing, and all other architectural approaches that depend on “services”.

Ah, I knew there had to be a silver lining to that cloud (*sniff*).

Cheekiness aside, the reality is that many organizations haven't really had a clue as to what SOA really is or how to do it. They, led by all too eager vendors and the general vagueness of the term itself, naively equated "SOA" with tacking on web services to their existing applications or building an ESB like a "field of dreams"--which many did, and dutifully waited for the magic transformation to come. It never did, mostly because many organizations were already too mired in years (indeed decades) of creating siloed applications. True service-orientation, however, required a re-thinking of traditional methods of doing IT, a shift that met silent but stiff resistance in many organizations. SOA demanded a revolution in thinking, something most organizations were simply not ready for.

So the term "SOA" must die, and give rise to equally vague (but much trendier) and equivalent terms. Silently and slowly, though, an evolution will happen: out of necessity, if nothing else. For services are an economy of form in an inter-connected world.

Yesterday the Ruby on Rails team broke the news: the alternative Ruby web application framework, Merb, will be merged into Ruby on Rails 3.0. Merb, which was already closely patterned after Rails, brings performance, modularity, and better integration with alternative JavaScript and ORM frameworks to the table. The default Rails configuration will still be the "full stack" framework, which uses ActiveRecord and Prototype, but there will also be a "Rails Core" with the ability to opt into specific other (e.g. JavaScript or ORM) frameworks as desired.