dards groupand to be honest should not be expected to do so. This may prove to be more problematic as Macromedia attempts to position Flash as an alterna- tive to complete Web page development, especially as a key provision within the Macromedia Flash license states: You may not decompile, reverse engineer, disassemble, or otherwise reduce the Macromedia software to a human- perceivable form. This particular story is far from over. The impetus that open-source software licenses have had on the development of new technology is forcing many people to reconsider the conditions under which they both create and license technol- ogy. It is entirely possible (though in the realm of speculation at this point) that Macromedia could choose to make SVG a format for at least reading and poten- tially writing Flash content. Here again, Macromedia would own the patents on its own engine, but the data format that its using would be open-source and could only be altered through extensive public debate within the overall develop- ment community. In many ways it is this ability to have the debate in public, with the potential for input on the part of all interested parties, that illustrates why SVG should remain a royalty-free standard. Programming and SVG This book isnt filled with lots of fancy graphicsindeed, in comparison to what you can do with the language, the content here is distinctly pedestrian. One rea- son for that (my own inability as a graphic designer notwithstanding) is that I wanted to place more focus on the task of working with SVG from the stand- point of a programmer. Programming with SVG might well be seen as something of an oxymoron, especially given that I dont really start into serious DOM programming until Chapter 8, Animating SVG, or so in this book. However, this actually misses the point about SVG, in that the language itself includes any number of features that make it a valid programming environment even before you write the first line of JavaScript or Java. Declarative programming differs considerably from procedural program- ming in that regard. In a procedural program, you focus upon specific actions: You assign this variable to this value, you turn this flag on or off, you perform this calculation, and then you move the frog over the result in pixels. In essence, pro- cedural programming involves the creation of a running thread of actions, and you can typically, at any point in the program, say that this event will happen at this time. Declarative programming, on the other hand, involves the creation of envi- ronments: You build primitive objects that in turn go toward the making of more complex objects, which in turn build even more complex objects. However, at any stage, the increasing complexity is also handled at an increasingly high level 16 Chapter 1