This has been a bad month for the Scalable Vector Graphics movement Because of a developing family medical crisis, I’ve had to step down from chairing the SVG Open 2006 conference, a decision which, combined with other issues that the conference has had, led to the mutual decision by the SVG Open board to cancel the conference this year and hold it in 2007. This decision was hard to make, given the importance that this conference has for many people and not a few companies, but it is also a reflection of larger factors that have seriously buffeted the standard over the course of the last year.
Adobe this week made an announcement that was, while not unexpected, yet another blow - they were choosing to stop supporting the Adobe SVG Viewer in any fashion, to make it unable for download by the end of the year and to effectively dismantle the last vestiges of SVG outside of the fairly secondary roles that that standard plays in Adobe products in favor of their own FLEX language, acquired from Macromedia during the merger last year.
Meanwhile, work has effectively stopped on the Mozilla Firefox SVG implementation, at least until after the release of Firefox 2.0, and while it is certainly hoped that the program will be continued the rumors at this point are somewhat grim, with the very real possibility that SVG is considered to be disliked politically by certain factions within the organization in favor of the WHATWG Canvas specification.
There are points of light in all of this darkness: the release of Opera’s superb SVG 1.1 implementation in their Opera 9.0 product shows that a dynamic SVG implementation within the browser is both possible and feasible, the Batik project, after having sat dormant since 2003, has gained new life, Inkscape is very rapidly becoming the default vector program for the Open Source community, and both commercial and community efforts in SVG are definitely showing that SVG is capable of meeting at least some of the tasks at hand.
However, I think that there are times that it is necessary to step back and seriously evaluate any technology, asking whether in fact that technology has what it takes to be viable. There are more than a few fairly significant issues that SVG has fallen short on. As an evangelist of the technology, I am in a position where it behooves me to overlook the bad in order to promote the good, but I also need to remain objective enough to understand why SVG has failed where it has in order to suggest ways that the technology can either be improved or to suggest that perhaps SVG has no business being in certain arenas.
SVG has always been a somewhat challenged technology, because it struck at the heart of one of the core functions of any and every operating system - the rendering of what you see on the screen. With the exception of rendering icons, operating system graphics engines are fundamentally vector engines - adept at designating rectangles, circles, shapes and regions, together with brush and fill patterns and text handling routines. Given the concerns coming from operating system vendors (and not just those in the commercial camp), SVG initially started out as a considerably underpowered standard that lacked such things as text flow regions, the ability to cleanly handle 2.5D features such as “3D” borders, more robust gradients, layout managers, and a host of other features that for the most part made many operations problematic at best. At the same time, the animation capabilities that did end up in the standard, while quite cool, also significantly degraded the performance of SVG applications.
The SVG specification was also seriously hampered by the attempt to make it the first RAND (Reasonable and Non-Discriminatory) W3C standard, an effort that was brought about in part by the larger stakeholders in the standard who felt that there was too much potential for SVG to be potentially competitive with their own product lines and wished to see some parts of the technology licensed.
I’ve always felt that when the W3C refused to endorse the RAND standard in their charter, Adobe’s interest in participating in the evolution of SVG dropped off dramatically. The business reason at the time was no doubt sound, and I know from discussions with Adobe at that time that there was still considerable interest in the standard, but the merger with Macromedia (which obviously saw a potential for conflict with SVG to their own core Flash (and now FLEX) products) insured that the actions this week were nearly unavoidable.
SVG’s commercial track-record has also been more than a little frustrating. A number of companies have invested a considerable sum of money and programmer resources in order to develop SVG viewers, yet the market for such viewers is more threadbare than it was even a couple of years ago. Corel, before it was bought out, had perhaps the second best SVG viewer (and it was reasonably close in a number of areas) but the industry interest was lukewarm at best. Whether it eventually contributed to the dismemberment of that company is always debatable, but from the standpoint of the SVG community it was a blow. I’ve had numerous friends and business acquaintances who have tried their hand at creating such viewers (or of building businesses around the standard). Most are now engaged in other activities that are only peripheral to the field, their projects and products so much roadkill.
I think that a part of this has come because of the fact that XML languages in general have taken considerably longer to achieve adoption than most people, myself included, ever thought possible. XSLT 2.0 is very nearly out of the standards process some six years after the first version was released, and XSLT 1.0 is only now just really beginning to gain pervasiveness of adoption (to the extent that many now entering into the AJAX realm or only just beginning to discover the power of AJAX + XSLT … a topic of which I will have far more to saw in a future post). XForms, despite having been pushed out the door in 2002, is finally beginning to get some uptake and momentum.
XML languages are, for those of us enmeshed in them, surprisingly simple to work with if your world consists of transformations, pipelines, bindings, rich data models and distributed programming. It is why I have to occasionally re-examine my own assumptions as a writer when I talk to people about XML, because for a great number of people, XML exists largely at the periphery of their own programming or systems management experience. SVG faces this issue even more acutely than other languages do because as a language it exists at a level of abstraction one removed from even something like HTML.
I need to explain this. HTML (or XHTML, to stay within the XML vernacular) ultimately is a language for abstracting the display of a particular form of document, in this case a web page document. You could not use XHTML to display vector graphics. However, if you consider that SVG is a graphics language on par with Postscript (and its successor PDF) or GDK(+) or any other graphical standards, then there is comparatively little that would stop you from using a transformation on HTML in order to create SVG for the actual display of content. The fact that there are some limitations that would prevent this attests to my initial assertion that SVG 1.0 (and 1.1) was underpowered, though whether SVG 1.2 has in fact solved that is debatable.
The point, however, is that even given this, SVG is a much lower level language, and one that quite properly only comes into its own either in very graphical applications (such as geographic information systems) or when mediated through some form of binding or transformation language - XSLT, XBL or some similar mechanism. Indeed, I daresay that even GIS applications work better for bindings.
A binding basically takes a high level object model (such as information describing the various components of a map) and creates an association between each element of the object model (for XML expressed as XML elements) and an underlying implementation in a lower level language.
An illustration here can prove useful. Let’s say that you have a map that shows houses on a street. You can of course render this directly in SVG, drawing the various elements in their respective locations, but the information contains comparatively little external information, making it difficult to update it except by being very diligent in commenting. On the other hand, with a binding, you could do such things as take a reference to a <house> object, declared as something like:
<house>
<map_reference>C11125A5</map_reference>
<map_coordinates units="km" x="1.252" y="2.1442"/>
<lot_coordinates units="m" path="M0,0 L0,25 30,25 30,0 0,0z"/>
<house_coordinates units="m" path="M8,7 L8,18 24,18 24,7 8,7z"/>
<owner>Kurt Cagle</owner>
<address>
<street>1313 Mockingbird Lane</street>
<city>Victoria</city>
<province>British Columbia</province>
<country>Canada</country>
<postal_code>V8N3R2</postal_code>
</address>
</house>
and with the binding render this object as the appropriate graphical entity in SVG. The distinction between a binding and a transformation in this regard is simple - a transformation performs the mapping between the XML of the house object to its appropriate SVG representation, while a binding effectively monitors the house object and its subordinate DOM members and then forces a change in the representation (perhaps by calling a transformation) when the underlying model changes. In my experience, a binding that also calls a transformation is perhaps the best of both worlds, but that’s outside the scope of the present article.
One point to note here - bindings do not necessarily need to be set up on each element of a given XML DOM. In the above example, for instance, there may be comparatively little benefit to placing bindings on <map_coordinates>, for instance, if the <house> object is “atomic”, though if most objects include a <map_coordinates> object, then there may be some. Good bindings, like good schema design, require a trade-off between flexibility and efficiency.
Bindings thus have a huge impact upon SVG. Without them, most SVG objects end up being either built in code by hand or end up being generated from a graphical editor that generally tries to optimize for performance rather than legibility (or programmability). This is not to say that SVG as a general transport format doesn’t have its place, but this assumes a fidelity of translation between systems that SVG currently does not yet possess to any meaningful degree - especially compared to such things as postscript, which has a twenty five year legacy to overcome.
The W3C Working Group had spent nearly three years developing a binding language, which has undergone a number of both design and name changes over the course of its life. Its latest incarnation, sXBL, was a very minimalist interpretation of the binding requirements aimed largely at low memory system devices that didn’t necessarily support scripting. There is, of course, a danger with that kind of strategy, one that WML phone vendors found out to their chagrin - standards efforts take a significant period of time, and in that time the “minimal” bar will almost always improve dramatically. WML died out largely because it was too limited and ambiguous, attempting to create a subset of an existing standard (XHTML) even as cellular device manufacturers were reaching a point where their graphical interface systems could handle the rigours of XHTML.
The sXBL language is dead, killed by a decision recently in the SVG working group. While I was not privy to the discussions there, I suspect it had to do with the fact that an existing XBL standard - Mozilla’s XBL implementation I’ve discussed in previous columns - had become by far the most well known, and had additionally been pushed into the W3C as a draft. The new XML Applications activities are now working with what is increasingly looking like the Mozilla XBL 2.0 implementation, which includes support for both some form of programmatic interface and the relevant transformations of key elements (and about which I will also be writing more in upcoming columns). sXBL had become irrelevant.
Ot should be noted that a related SVG 1.2 specification, the getData() and postData() methods that were for a long time a part of the external data communication system within SVG 1.2 are also gone for precisely the same reason. The industry standardized on XMLHttpRequest, largely because of its flexibility and the recognition that in a distributed environment you need to have an asynchronous data communications protocol. However, rather than working with that component, the alternative was to come up with a generalized Connection object (http://www.w3.org/TR/SVGMobile12/svgudom.html#global__Connection) for low level socket level communication, one that is admittedly asynchronous, but that is nonetheless still using a custom set of APIs (and ones that are considerably lower level than most web developers are generally comfortable with). This would perhaps not be quite so egregious except for the fact that the XMLHttpRequest object is now on a fast-track for approval by the W3C itself.
This tendency to create implementations generally outside the industry norm (and outside the domain of other W3C technologies) has also been exemplified in the ongoing struggle between SVG and CSS. There is a fairly significant overlap between the two technologies, and whenever you have such an overlap, the sometimes strong egos involved tend to get in the way. I’ve worked with CSS since its inception, and while I have become quite proficient in its usage, I’ve never been a big fan of the fact that there has been no major effort (with the exception of the admirable work done by Doug Schepers) to create a standardized XML implementation of CSS. This would have a profound influence in most of the presentation formats that the W3C currently holds sway over, would make it possible to validate presentations in the same way that you can validate any other XML document, makes it much easier to build styles via transformations and so forth.
However, the ongoing competition between CSS and SVG has largely stymied that effort. There are personalities involved, and the personality clashes and conflicts have been responsible for a significant amount of the delays involved in seeing the standards out, have created incompatibilities in the W3C stack in a way that makes it far more difficult to use the pieces together cohesively, and I suspect may also be responsible for a great deal of the perception on the part of first tier implementers that these conflicts mean that they should hold off on the implementation of standards such as SVG.
I see signs of this elsewhere in the W3C stack, and it angers me. The DOM activity was closed down a few years ago in the belief that its work was done, leaving the world with the verbose and often unwieldy DOM API and providing no convenient hook for extensions, despite the fact that such extensions are emerging via such things as E4X. Is E4X by itself within the mandate of the W3C? No - its obviously by its name (ECMAScript for XML) that it is rather a curious appendage of the ECMA’s only standards efforts - but in truth the many efforts of creating an objective XML language - in Java, JavaScript, Python, Perl, C#, Ruby, PHP and so forth - point out that the world, or at least its developer community, finds the arcane and verbose DOM standard to be too unwieldy for their use. I have to wonder if the relative indifference to SVG is a tacit response to that same frustration.
Yet for all of this, I am not ready to pronounce the SVG standard dead yet, not in the face of so much evidence to the contrary. Opera’s efforts in this regard are notable - with a native SVG implementation already in their 9.0 browser, Opera has basically done something truly necessary to the survival of the standard - it has created a native implementation within the browser, rather than forcing users to go the route of plugins. SVG is also finding its way to the Apple Safari desktop (and like all that Apple does, will likely be fast, efficient and really sexy). I believe that with SVG on Opera, this will likely be a burr in the saddle to Firefox to get their own implementation of SVG completed, which only leaves Microsoft …
Adobe has left the building. Microsoft has recently release their second 7.0 beta, and its status as a stop-gap seems at best only to be confirmed by this - IE7 would have been a really cool browser in 2002. In my list of career regrets, not going to Microsoft to take up that challenge looms large, though I suspect now more than ever that I would have been the wrong person for the job. The truth at this stage is that for Microsoft, SVG on 7.5 makes an incredible amount of sense - it actually provides a bit of technology jujitsu against Adobe (which now has its own Flex language that it is pushing at very opportunity), it works well in the strategy of moving IE to a pure XHTML browser, something which lets them recapture some of the market that they’ve lost to Firefox in the enterprise space, provides an update for the aging VML language which is itself nearly a decade old, and can act as a stepping stone to adoption of other Microsoft XML technologies, including their own WPF/XAML efforts.
This last point needs a little explanation. XAML has been the bogeyman for SVG developers since its inception. XAML is a considerably larger and more complex effort, dealing with pieces of UI far removed from the province of SVG in addition to its obvious graphical domain. The problem with this approach is that XAML is also a compilation oriented language that necessitates having a fairly robust run-time available … or of using system resources such as JavaScript and native graphical implementations such as SVG in order to create a proximal application on platforms such as OSX. XAML is, from discussions with Microsoft, too heavyweight for even earlier versions of IE, especially in the face of sandbox and security concerns.
However, if Microsoft had its own native SVG implementation, it can in fact use the same proximal WPF routines that it does for the Apple code, and an SVG component is considerably lighter-weight than XAML is - making it easier to pass the viewer as an internal update to IE. This also helps to push the notion of transformational bindings (and lets them additionally recapture momentum) in a flavor that is more beneficial to Microsoft’s interests than letting other projects such as Firefox push that particular technology. It gets the excellent LINQ technologies in front of web developers and ultimately positions the IE browser as being the gateway to future technology rather than being seen as a rather crusty has-been.
Microsoft made a fairly strategic error about six years ago, one which it is paying for now. In an effort to reignite the declining shrink-wrap model, they made a decision to stagnate the browser - it would eventually merge back into the operating system. The decision backfired on them in a major way. Electronic resources, including software, video, music and so forth, increasingly exist only in downloadable format or even just as distributed BitTorrent clouds. The only thing keeping the software industry from collapsing entirely is the degree of ethics that most people adhere to, and that is rapidly slipping in the face of the benefit/penalty ratio. This means that for most people, the browser continues being the most used application on the desktop. Firefox by itself is a pretty decent browser, but Firefox with an army of extension developers becomes serious competition to the Windows desktop.
As an aside, with of course perfect 20/20 hindsight, Microsoft’s best strategy would have been for them to concentrate on building up XAML not as a stand-alone (and bloated) XML platform but rather as an XML-based tool for adding extensions to Internet Explorer in the way that XUL is used now for Firefox, then let third party developers take the lead from there. I suspect this would have caused a massive gold rush to the new IE platform in the same way that there was the initial rush of vendors to the early Windows platforms, and would have basically energized the Windows market. However, the problem with hindsight is that the should haves are generally only apparent after the dids are etched in stone.
So this brings us back the SVG. SVG 1.2 Tiny will be going golden in October or November, assuming that someone doesn’t decide to stand in the way again. It’s a solid specification, with much credit to Chris Lilley, Dean Jackson, Nandini Ramani, Robin Berjon, Erik Dahstrom, Doug Schepers, Antoine Quint, Andreas Neumann and the others of the SVG working group who have given up the last couple of years of their lives in order to see this spec out the door. It nicely rounds out many of the limitations that I see with the SVG 1.0 specification, making it the product it should have been. Moreover, given what I’ve seen of adoption of SVG elsewhere, this is the important specification, probably the definitive SVG specification for 1.2 - SVG 1.2 Full will likely not see daylight for some time to come, and it will draw heavily upon Tiny when it does.
I’m older now … my daughters delight in counting not the stray white hairs in my beard, but the increasing clumps of white. With that age comes a certain degree of acceptance - the world is never as good as you hope, nor is it as bleak and dark as you fear. Adobe’s decision to exit that field has opened up a vacuum, but vacuums tend to fill up of their own accord. I believe that SVG’s heyday is actually still ahead of it, but it will take wider spread adoption of binding-based programming in order for it to live up to its potential.
With bindings, the underling low level rendering capabilities become less relevant - SVG or XAML or Flex will all work, and indeed with a consistent binding architecture in place (which I see emerging) this opens up what I see as one of the more exciting potentialities - you build applications by creating a common binding framework which can work on object-oriented schemas to render to the local environment in the manner that is most appropriate. Within the Flash environment, this would be Flex, Microsoft could use WPF/XAML or possibly a JavaScript/SVG basis, while everyone else utilizes that last combination for their own apps.
In the long run, this is perhaps as it should be. One of the arguments that has been made by many companies, Microsoft perhaps foremost but far from alone in this, is that the danger that standards have is that they tend to force homogenization on all adoptees of those standards, usually at the level of the most minimal implementation. While this gives developers a chance to compete, it also penalizes those who have the resources to move beyond these core capabilities.
On the other hand, by creating a common binding layer, an abstract analog to a CLR or similar system, I believe this opens up some very real possibilities for companies to have their cake and eat it too - building differing implementations that still work to accomplish the same relevant tasks between platforms, but give the platform developers the latitude necessary to show off their own system capabilities to the best potential advantage.
Will it happen this way? I don’t know, though my instincts say yes. The Kudzu principle (”XML expands until it replaces all available processes in a system”) argues that XML will almost certainly end up being the dominant messaging architecture in a system over time (and why I believe that REST will likely dominate over RPC/SOAP, if it comes to that). I see binding architectures as the next logical step in that process, and in so doing, feel that SVG plays a critical part in the presentation layer of that architecture, as the graphical layer of choice in those systems where a proprietary binding is not as critical.
These troubles too will pass. I’m no longer actively involved with the SVG Open conference (at least not for a while) as I deal with family issues that are more critical to me personally, but I will continue to support the technology in my writings and through behind the scenes efforts. Please check out http://www.svgOpen.org for updates about what is happening with the conference, and I ask if you are interested in any way with Scalable Vector Graphics that you look at ways that you can become involved by contacting the organizers directly.
Kurt Cagle is an author and software developer living in Victoria, British Columbia.


Thanks for taking the time to write this, Kurt; I've learnt an incredible amount from this state-of-play roundup.
If you are ever to see adoption of the outside-the-vendor XML languages, you have to learn to think outside the W3C endorsement and into the XML-as-allied languages environment.
SVG refused to sit down with X3D determine the requirements for a 2D layer in 3D. SVG arrogantly asserted it could become a 3D language when it is inherently not designed for real-time 3D. Today there is a 2D layer running in some of the X3D browsers which are still slowly but surely gaining market acceptance, and doing so after XML.COM's editor also arrogantly refused an article from a major X3D veteran, Tony Parisi, claiming that the space should be dedicated solely to X3D.
You shot your own feet off by assuming you had the upper hand when all you had was a mound of sand above a hurricane surf. Such opportunities erode fast, Kurt. As I said then, I say now: to survive past emergence, a new species has to find its natural allies and propagate through them. Every place SVG could find fungible soil, it should have planted a seed.
We get too embroiled in the politics and forget that the most important survival characteristic is running code and rough consensus. Nothing about that has changed.
Ooops. "That the space should be dedicated solely to SVG". And that 2D layer is not SVG. That train pulled away from the station without SVG because SVG couldn't be bothered. As for O'Reilly's editor's decision, that was just dumb. Oddly enough, when people go looking for an X3D tutorial via Google, one of the most popular is one I wrote for XML.COM when Ed Dumbhill helmed it.
Who learns? The ones that keep an honest accounting for their own mistakes.
I like that Firefox 2.0 beta 2, has svg:Textpath ability... I'm hoping a few people start doing SVG coded blogs. Things could get very interesting then.
len,
"SVG refused to sit down with X3D determine the requirements for a 2D layer in 3D. SVG arrogantly asserted it could become a 3D language when it is inherently not designed for real-time 3D. "
Wherever you got that information from is a terrible source. It's completely wrong. SVG was never intended to be a 3D language. Never, ever, ever. As for being used as a 2D texture in a 3D canvas, then it is as good as or better than any raster format (after all, it is resolution independant). The fact that many people have implemented real-time SVG viewers using 3D libraries proves this.
Dean
"Meanwhile, work has effectively stopped on the Mozilla Firefox SVG implementation, at least until after the release of Firefox 2.0, and while it is certainly hoped that the program will be continued the rumors at this point are somewhat grim, with the very real possibility that SVG is considered to be disliked politically by certain factions within the organization in favor of the WHATWG Canvas specification."
This is untrue; Mozilla SVG development has continued unstopped since Firefox 1.5 has been released, and the current code has numerous improvements, bug fixes, and new features. You can experiment with this codebase by downloading a trunk nightly build from Mozilla.
However this code will not ship as an official release until Firefox 3.0, as Firefox 2.0's layout engine comes from the same development branch as Firefox 1.5. Firefox 2.0's SVG support differs from 1.5's in the addition of <textPath> and a number of low-risk, high-benefit bug fixes (query bugzilla for fixed1.8.1 & SVG, and see the attachment list of bug 339220).
There are certainly those who dislike the SVG standard, but the objections are usually technical in nature rather than a political preference for the <html:canvas> specification. I think most realize that both the SVG and <html:canvas> approaches are valid for their appropriate problem domains.
"Adobe ... to make it unable for download by the end of the year"
Kurt, Adobe will stop the downloads as of Jan 2008, not Jan 2007. We still have a year to get something else in that vacuum. Good to find you back blogging, I haven't seen anything at understandingxml.com for quite some time. I guess this is your new home?
"Wherefore" means "why."
Wow! This has certainly struck a chord or three. In response, let me address the following:
1) Dan. Thanks!!
2) SVG and X3D. Len and Dean, yes, SVG has little to do with three dimensional systems, but there is enough overlap at the point where 3D involves surface characteristics that the issues do come up. There are a number of issues involving filters in particular that do touch upon the realm of 3D, and I've long felt that the lack of anisomorphic matrices, while understandable from an efficiency standpoint, has long been a limitation of the language.
More to the point, I think that a constructive dialog between the 2D and 3D camps would have been useful in the development of both specifications, and from my (albeit distant) standpoint, I didn't see a lot of cross communication between the two. Given the increasing importance of both 2.5D and 3D effects on the desktop, this lack of communication may prove problematic in the future.
3) Tim - Fantastic! I had heard from a few sources that there was some discord within the Mozilla team concerning the future of SVG, and was actually hoping to hear from you or someone else as to whether in fact that was true. I've been concentrating on the Firefox 2.0 build because I have an application I'm developing on it and the amount of cleanup necessary to go from nightly build to 2.0 is distracting enough I do so only when necessary, but if you are correct in saying there is considerable progress being made, I will definitely check it out.
I have a lot of hope for the Mozilla SVG implementation - I think it will make or break the standard in a way that no other development can, and if in fact it is in fact still on track I can only cheer about that.
4) Jeff - Thanks for the clarification - I had seen January 2007 in the report I was looking at, and wondered at the abruptness of it. I shall make a change to that forthwith.
5) Devon - You've given me a very disturbing idea ... he he he he.
6) Jeremy - Um ... yeah (feeling sheepish). You're right. Wherefore does in fact mean why. Okay ... it's still a cool title (feeling very sheepish)...
Real-time vector 3D systems use 2D layers for a variety of tasks, HUDs being one. It wasn't a terrible source, Dean. It was arrogant. The editor of this page was one (not Kurt; Kurt has always been helpful and technically excellent).
Survival in a world of competitive force is hard, but thriving is about reproduction so the felicity of allies is all important. It is easy to mistake the top of the long tail for the most powerful end, but often, it is the slowest, transient and mediocre. What is important is to establish sustainability not authority. Languages that keep on keeping on after the press and the pundits depart have a very strong survival core even if they aren't reproducing at the phenomenal rate of an entity introduced into a vacuum (if HTML had serious competitors at the time, it would have died stillborn and TimBL would still be a CERN network engineer).
There are two technical issues for a markup language of any kind that affect its sustainability:
1. The rate at which the syntax productions (say namespace) are adopted into other languages (say aggregate).
2. The interoperability of the object model by which they are implemented.
These are related but separable and both can be exploited to amplify or retard the rate of the language's reproduction, thus its survival chances in a competitive ecosystem. If you have to choose between authority (the source) and sustainability (the survival of the resource), choose the means that sustain.
len,
"Real-time vector 3D systems use 2D layers for a variety of tasks, HUDs being one. It wasn't a terrible source, Dean. It was arrogant."
I'm still very puzzled. I can't remember ever getting any detailed set of requirements from anyone in the 3D community. I can't even remember any vague requirements being mentioned. I'm not sure how we can be arrogant when there was no communication.
It would have been an interesting discussion if X3D had participated in the SVG process. 3D on the Web was, and still is, an obscure use case compared to the majority of Web graphics. If there is still a way to enable SVG use in X3D then I'd be happy to help. Maybe you could describe the problem?
"I've long felt that the lack of anisomorphic matrices, while understandable from an efficiency standpoint, has long been a limitation of the language"
I'm not familiar with the term "anisomorphic", so I'll assume you mean "non-affine transformations". Agreed! I was planning to make a small Bard's Tale clone in SVG (not the best application, I know, but still would have been cool!) until I discovered that I couldn't do the wall graphics with SVG because of this limitation (without severely distorting things and getting a "fish-bowl" effect). At the moment, SVG truly is restricted to 2D unless you're talking about simple 3D wire-frame approaches with straight lines...
"3D on the Web was, and still is, an obscure use case compared to the majority of Web graphics."
Really? Still repeating the same dumb self-serving and self-immolating position? Ok, let's do a quick search.
http://www.web3d.org/
www.amazon.com/Visualizing-Information-Using-SVG-X3D/dp/1852337907
www.cs.swan.ac.uk/~csowen/SVGtoX3D/examples/index.html
www.w3.org/2004/04/webapps-cdf-ws/papers/SchemaSoftEmbeddingPaper.html
www.xml.com/cs/user/view/cs_msg/1366
www-128.ibm.com/developerworks/xml/library/x-matters43/?ca=dgr-lnxw06VRML-X3D
www.xml.com/cs/user/view/cs_msg/1367
and just in case you don't think the W3C considered it
http://mail-archives.apache.org/mod_mbox//xmlgraphics-batik-users/200203.mbox/%3C3C90D4B4.8060700@vlc.com.au%3E
There is nothing obscure about it. You weren't listening.
The problem is the X3D spec writers had to move on because their market was heating up.
len
Anisomorphic is (mostly) equivalent to non-affine transformations, yes. Admittedly, I understand the rationale - non-affine transformations require a 4x4 matrix, rather than the SVG 3x3 matrix, thus in theory being optimized for processing, but given that even baseline systems now have GPUs that have hardware enabled 4x4 transformation pipelines the benefit seems somewhat more marginal.
Thanks, Tim, for answering. When I got to the part that SVG in Mozilla might be dead, I almost emailed you a panicky cry for help! ^^ I'm glad that you and your SVG efforts in Mozilla are still healthy. And I still think that it has the potential to be the "critical mass" app that brings attention to SVG. I think one small but indicative datum is that more people are making sure that their HTTP servers send the SVG mime-type.
Kurt, cheer up. You sound as if giving the death knell for SVG. Those of us working on SVG apps (for me, Inkscape) honestly think quite differently. There is a feeling that SVG is rapidly approaching the watershed beyond which people will realize what a handy format it is. Maybe the W3C has its problems, but the idea itself is starting to do quite well.
And Adobe's viewer? Even though it is one of the best renderers available, it has always been a thorn in the side of people wanting to further the standard. Why? Because so many web sites display their SVG with an EMBED or an OBJECT tag, rather than the proper IMG tag in HTML or SVG tag in an XHTML document. Only recently have browsers begun to display SVG either way, but it is still a pain. Who knows? Maybe Adobe leaving the field will be an opportunity for someone to fill the gap with a proper, full blown SVG engine with animation, scripting, and SMIL updates.
As an aside, although using the two unused columns of the last row of an affine transform would provide perspective, why break the design of 2d drawing to fit it into 3d? Isn't this a perfect occasion to use mixed XML namespaces? Affine transforms are closed, making them clean and elegant. Rather than mixing and muddling rendering models, why not layer them cleanly?
Bob,
Thanks. It has been a frustrating couple of weeks when I wrote this, though I think most of the points are still valid. However, as Dickens wrote, "It was the best of times, it was the worst of times."
I have long held that the Adobe viewer was a mixed blessing for the SVG community - it showed what was possible with the language, but it also encouraged a number of bad habits (ignoring the need for namespaces for instance) and the on again, off again stance of its development tended to keep people from adopting alternatives.
I had breakfast recently with a colleague of mine involved in traffic control systems who has been following SVG very closely, and I found that, after some thought, there were a number of areas where I think SVG is looking up. Inkscape (and related projects like Scribus) continues to gain credibility as the application becomes more refined and polished. I'm encouraged by the way that people are now talking with one another in the industry - and how core technologies for implementing this standard are increasingly becoming adopted by wider and wider audiences.
My argument on the non-affine transformations is only partially in support of 3D, though that's the obvious use case for it. It has more to do with processor support on 3D chips - SVG rendered using 3D ops in hardware obviously will solve many of the major performance issues that have plagued most implementations of it that I've seen, and indeed I've seen a couple that actually do go that route to good effect. Such chips have become largely standard issue on most desktop devices and are increasingly common in embedded systems. A 4x4 tensor can also be optimized for pipeline flows in a way that's more awkward for a 3x3, which means that while a 3x3 will be somewhat faster to compute normally, the difference between processing is not 16/9 but probably close to 11/9. In other words, for a comparatively small degradation on low end devices using software computation, where high performance transformations (for animation, as an example) are relatively uncommon, you gain a sizeable advantage on desktops and higher end PDAs that do have 3D chips.
I think that while SVG and X3D do not need to be muddied, there are places where quasi-3D effects (such as the lighting filter) are already in place in the SVG standard. Admittedly, filters (both raster and vector) are generally extant only at the very outer edge of most SVG use cases, but this is again a chicken and egg problem - people do not use them because they are slow and awkward, and because many implementations do not even support them.
This is, by the way, another area where 3D chips shine. Most 3D capable systems have a very rich and sophisticated filter pipeline, to the extent that it seems silly to do these filters in software when perfectly good ones exist in hardware that are 1000 times faster.
Okay - beating a dead horse here ... I worry that SVG is making the same mistakes that the WAP group made six years ago, assuming a too low benchmark in some areas and too high in others, then finding that they had obsoleted themselves out of the market.
By the way, I did want to say that I think Inkscape is one of the true success stories of SVG - I use it daily (and have since the time that it and Sodipodi were still joined at the hip) and I believe that it sets a high but achievable bar for other SVG aplications out there. I see SVG becoming the de facto open source 2D graphical standard, though I also see stormclouds emerging on the open source front, but that's a discussion for another day. Keep up the good work, and I'll try to be a little more upbeat in my next SVG post ;-)
Maybe this is a dumb point.
HTML, as best I can tell, is, at its simplest,
paired tags:
content and formatting
Word Processing (such as Word or WordPerfect) is as well.
And so is, as best I can tell, basic RSS / XML code.
Comprehensible.
From what I've seen, getting SVG, viewable on the web
does not appear to be simple or straightforward.
Something as simple as
image
formatting
location
along the same lines of
in HTML.
I know that images and svg are not the same and that may
be an understatement. Nonetheless, perhaps for SVG to grow
in popularity and use, simple, comprehensible implementation
would seem to be key.
To the extent that browsers implement accessible implementation
procedures for incorporating svg into web pages svg may have
a promising and extended lifespan. If I have to learn XML or
XHTML and jump through complex hoops to get svg to work, I,
and perhaps others will probably be far less likely to implement it
over JPG, PNG, GIF, PDF, or SWF formats which require far less
code for access.
It doesn't seem to lend itself well, that I can tell, to text
based HTML coding. Perhaps more recent wysiwyg HTML editors
are more amenable to working with SVGs.
There are folks here far smarter than I am, but that appears to
be part of the problem, at least from where I sit.
Paper, pen, and a basic grasp of one's native language for the
most part has been all that has been necessary for communication.
HTML, XHTML, PERL, CGI, PYTHON, SQL, Actionscript, COBOL, UNIX,
Linux if these were required prerequisites for communication for
all their abilities and power, I fear, the vast majority of
people would still be illiterate.
I value the web for much of what it can do and, in many ways for
the simplicity by which it is accomplished. And I am frustrated
by the alphabet soup of the many different methods by which content
can be created for the web, each of which it seems requires an
understanding of some complex programming method each with its
respective advantages and disadvantages, standard and nonstandard
proprietary configuration.
If this be intolerable ignorance on my part, please educate me.
Mike,
SVG is conceptually no more complicated than HTML, but it differs from HTML in much the way that graphical PostScript differs from RTF. I find it useful to think of SVG having a very definite structure, one which really isn't that different in the main from HTML:
<svg>
<metadata/>
<script/>
<defs/>
<g> (*One or more*)
<use> or primitives (*One or more*)
</g>
<svg>
Indeed, about the only thing that you lack in comparison to an HTML document is the notion of a body per se, though in practice I usually place a group tag around everything else to serve in that capacity.
I think you do need to appreciate that graphics are not structured page layout - RTF, Doc format, etc. Postscript files are quite complex, as are Flash files - its just that in neither case are you ever likely to actually see these formats at the byte level, whereas you can see the structure of an SVG document.
-- Kurt
Doctor Who takes three prizes at the National Television Awards in a repeat of its success last year...
Doctor Who takes three prizes at the National Television Awards in a repeat of its success last year...
Colombia's vice president is "baffled" by Kate Moss's success following cocaine allegations...
Colombia's vice president is "baffled" by Kate Moss's success following cocaine allegations...
Wherefore means why, not where.
Someone pointed me to your writeup here, thanks Kurt!
I agree with Mike Moore, it's way too hard to simply make your SVG appear reliably in a couple of the key browsers, i.e. FF and IE+ASV. In-line SVG would be preferred, this EMBED & plug-in garbage is a huge negative. Like another writer corrected you, luckily FF has got a strong, plug-in-free SVG in it.
I'm a greenhorn on this, but I am appreciating the value of SVG's tool-free (except for your brain and a couple books) capability, human-readable markup, and alignment with XSLT. I've got some data, just want to transform it into a picture. Nothing else is as straightforward and simple. I don't want a mega-hundreds-of-dollars developer tool like Flex, and I don't want to learn Javascript. (And I certainly don't want to tangle with an anachronism like VML).
Your point about binding is important, and that would be great if we had it. But my needs are much more fundamental. Don't need binding, don't need 3-D, don't need animation, for our types of problem-statements.
Thanks again Kurt!
great article about SVG, i found it throught http://www.svg.org