Degrafa - my part in its development

NOTE: This is a purely personal perspective on my involvement with Degrafa and is a bit rambling in nature. You might find it interesting if you are considering whether or not to start doing open source development, or if you are simply curious about why/how I got involved with Degrafa. If you are looking for official Degrafa information you should go to the degrafa website.
I am a Core Team member and active developer (since April 2008) on the Degrafa team. At the time of writing this article my code contributions (measured simply in activity only: activity comprised of a mix of feature additions, optimizations and bug fixes- along with a smattering of doc updates of course) are second only to Jason Hawryluk, one of the founders of Degrafa and its main architect. Here is a little bit of history from my perspective in case anyone is interested, if not then at least it's helpful for me to remember it...
HOW DID I GET INVOLVED IN CONTRIBUTING TO DEGRAFA?
My interest in Flex was spawned through my interest in Degrafa which itself was purely coincidental. I happened to be working on a personal project during mid to late 2007 that had some similarities to Degrafa in relation to SVG 'support' in flash. At the time I'd only shared the type of work I was doing with a few of my friends in the Flash community and was oblivious to Degrafa. I found out about Degrafa because Juan Sanchez and Jason Hawryluk used the 'SVG tiger' as a test case for Degrafa and I used the same source vector image for one of my early Linearticulator tests. I found the degrafa site quite by chance as a result of that coincidence when I was searching to see if anyone else had converted the svg tiger to flash format, and became intrigued with the idea of having linearticulator output to other formats, such as Degrafa.
After having contributed a couple of fixes to Degrafa via the issues queue I eventually ended up getting in touch with Juan and Jason. Following initial IM chats with Juan and subsequently speaking with Jason directly, Jason persuaded me to come on board. We both lived in France at the time so it was easy to get in touch being in the same time zone. Contributing to Degrafa was a challenge for me initially in this sense: I knew the flash drawing API inside out and understood that side of things, but had no experience at all with Flex at the time. In fact (from a distance, with Flash-dev-only lined glasses) Flex looked too much like html for me to ever want to 'code' it. Such is the ignorance of the ignorant. Side note:It's kind of ironic I guess as I think some Flex devs think of most Flash devs more as designers, and assume they all do their coding scattered over the Flash timeline - the truth is that Flash alone caters to broad range of skillsets, and a lot of flash devs don't actually write code in the Flash IDE itself. Anyhow back on track: Jason was awesome at helping me get over my ignorance about Flex, and -although I still prefer the fine grained control of actionscript- I have since learnt the elegance and utility of mxml and the Flex compiler (along with some of its downsides).
Thinking from a different angle, I had never participated in an open source project before, and I was uncertain as to how it would help or hinder my ability to earn a living in parallel while contributing. I was doing Flash freelance work and Degrafa was a project specific to the Flex community, so I considered it as an opportunity to get familiar with Flex while I continued to do what was mostly actionscript 2 work for clients, but it wasn't something that made sense for the market I was serving at the time. I remember discussing this with my Flash community friends. I was already donating a lot of my spare time to providing support in the Adobe actionscript forums. I decided that in terms of personal profile marketing, working on an open source project could be much better, if I could move more into Flex based work, so in the end this was a less complicated decision. Balancing things with paid work is easy: 'paid work comes first' - not really suprising, but very comforting all the same. I also decided it was better to concentrate on a project like Degrafa and aim for a long term contribution for an area where I had some good experience rather than try to participate in multiple open source projects at once.
As I wasn't doing client work in Flex at this point and didn't have Flex Builder beyond a quick trial use, all my contributions to Degrafa were coded in FlashDevelop, something I continue to do to this day (just because it feels 'right' to continue doing that; all my client work is now done with Flexbuilder/FlashBuilder -but I do still miss some of the Flashdevelop features when I'm coding actionscript sometimes).
I was living in France when I started working on Degrafa, however my wife and I made the decision to return to New Zealand in September 2008. I closed up business operations a couple of months before we left and I had spare time to devote almost exclusively to Degrafa before we packed and left France. This kind of balanced out a few months of disruption during travel and re-settling back into NZ.
I have now had the privilege of getting to know the Degrafa team members pretty well and having played a part in shaping something extraordinary that has made a big difference to the Flex community. In particular, Jason has been amazing to work with in terms of being a coding partner/collaborator, a Flex mentor (important given that I had never really worked with Flex when I started on Degrafa) and as someone I would consider to be a friend, although we've never met in person. We tend to communicate pretty regularly and throw ideas back and forth constantly. In short, working on Degrafa has been and continues to be fun.
Best of all, I've got to learn Flex "by doing stuff" (the best way to learn things, in my opinion) as I work on Degrafa. I have since been doing more Flex work for clients than Flash work, and particularly work that involves advanced use of Degrafa (i.e. not just skinning).
WHAT HAVE I WORKED ON IN DEGRAFA
Some of the following areas were extending work others (often Jason) had done, others I can lay claim to having contributed myself - I have indicated to what degree that is the case below. But in the greater scheme of things everything builds on what is already there, so even if the ideas might be new and self-contained as concepts, in terms of their implementation they only really reach new heights by standing on the shoulders of the giant below. What I can confidently say is that I helped in the upbringing of the 'giant' as well as being intimately familiar with the relevant code for these things and pretty much anything related to enhancing SVG compatibility in Degrafa:
- Transforms- fleshed out Jason's initial research and his planned implementation and added transform support to geometries as well as paint classes
- BitmapFills- added runtime loading support for BitmapFills (and RasterImage later on)
- VectorFill- conceived and coded VectorFill
- SVGDashLine- enhanced Jason's original dash decorator to be compatible with SVG's dash line (and it learnt a few extra tricks)
- SVG clipping and masking - added in Geometry mask modes for these which are different to the flash native equivalents
- GradientStops- added in support for more than 16 gradient stops (flash drawing api doesn't support this natively) to be more consistent with SVG
There's a couple more interesting things coming via my contributions ahead of the next swc release. More soon via my blog.
This is a non-exhaustive list, I've also worked on numerous other bits and pieces throughout Degrafa, most often in close collaboration with Jason. With Jason and the others on the team we have collectively added so much functionality to Degrafa that we need to start blogging more tutorials about how to use it all. There are almost 30K downloads of the last release (which is quite a bit behind the latest svn version now, the stats for which we do not have) and we have a sense that all those people are probably only using 'the basics' with Degrafa, when they could do much much more if they knew how... time to get busy.

Recent comments
11 weeks 2 days ago
18 weeks 20 hours ago
18 weeks 21 hours ago