| «« Real Life Takes Over for a Bit | MT-Blacklist in Action »» |
|
About
I'm Ryan Lowe, a Software Engineering graduate living in Ottawa, Canada. I like agile software development and Ruby on Rails.
I write this blog in Canadian English and don't use a spell checker. Typos happen.
Projects
» Full-time Ruby on Rails freelancer
» Full-time with Rails since May 2005 » Former committer for RadRails (now Aptana) » I also have a few Rails side-projects in development: 1. wheretogoinTO.com Toronto nightlife 2. Hey Heads Up! TODO list and sharing 3. Layered Genealogy family history research 4. foos for foosball scoring 5. fanconcert for music fans (on hold) Hiring Rails developers? I can telecommute by the hour from Ottawa, Canada »» Email: rails AT ryanlowe DOT ca
BulletBlog
Now hosted on Hey! Heads Up -- check it out!
Syndication
Pings
Recent
Derek Lowe's (Ryan's older brother) words at Ryan's funeral
blog@ryanlowe.ca no more Forging Email Headers: Good, Bad or Ugly? Sarcastic Dictionary (Part 1 of Many) Tags Hierarchies Twisting Rails is Risky Business Risky Business? My Take on Early Alphas Whoa, it's August 2007 Closing Comments A Postscript to "Growth at the grassroots" »» All Blog Posts
Linkage
del.icio.us/ryanlowe
technorati/ryanlowe.ca/blog Aurora Roy Jim Andrew Trasker Travis Kibbee Karen Dr. Unk Ayana Van Bloggers Joel Spolsky Robert Scoble Tim Bray Dave Winer Raymond Chen James Robertson Ruby/Rails Bloggers rubyonrails.org weblog David Heinemeier Hansson Dave Thomas James Duncan Davidson Mike Clark Jamis Buck Signal vs. Noise Tobias Luetke Amy Hoy: (24)slash7 Jeremy Voorhis Eclipse Bloggers Planet Eclipse EclipseZone Luis de la Rosa Eclipse Foundation Kim Horne Billy Biggs Ian Skerrett Mike Milinkovich Bjorn Freeman-Benson Denis Roy
Archives
|
Extensible Software
I've been meaning to write about this for a while now, but stuff has come up. It's certainly not a new topic but it's an interesting software engineering topic: writing extensible software. And I'm not just talking about extensible for the developers themselves, I mean writing the software to include hooks for other developers -- usually users -- to add to your product. Extensible software is starting to be more and more common. Development tools like Eclipse are extensible through plugins, my blogging tool Movable Type supports plugins, there are third party add-ons for MSN Messenger and Outlook. There are also extensions for my favourite browser, Mozilla Firefox. Making an extensible or plugable architecture lowers development risk, because people will go out and make plugins for things they really want, which in turn improves the overall value of your product. Sometimes features that start on as "third party add-ons" end up in future versions of the product, like message logging in MSN Messenger. The MSN Messenger team can gauge the popularity of that third party add-on without risking development time on it. Then when it's popular enough they'll put it in the main product. Another reason to be extensible is that you turn your product into a platform. The more "killer app" entensions there are for your product, the more in demand and ubiquitus the product will be because the product is required to use the killer extensions. This might explain why these types of products are often free because the companies that make them can make money in other ways by leveraging the platform. When IBM they ran the Eclipse project, for example, they used the Eclipse platform for one of their enterprise products called Websphere Application Developer, which they sold as a development environment for their Websphere server product. Eclipse's popularity then increased as well because people were extending it in many ways, some not even related to Websphere or Java. Another advantage is that some of the more advanced users prefer an extensible product over a restricted one. These advanced bleeding-edge users often start the adoption of a specific product, so it's worth appealing to them. Keep in mind that if people are hacking on top of your product they will report defects to you so that their extensions will work properly. Free testing is always a good thing, and again will improve the value of your product with less work on your part. Posted at November 26, 2004 at 02:42 AM ESTLast updated November 26, 2004 at 02:42 AM EST Comments
First, my condolences on your Granpa's passing away. It' good that you have all his journals to remeber him by. It's always good to have these wee treasures. I've been writing an extensible application in c# that allows us to plugin our own modules. Basically the plugin's are modules that are part of a collection of tools. The reason for us going down this road is that we'll very rarely have to update the application that host's the modules. Instead we'll be doing updates to the plugin's. It will be easier to manage and by splitting each module into it's own library there's no risk of one module affecting another module through continual development. » Posted by: Matthew Lang at December 2, 2004 09:00 AMThat's a good point, Matthew. A plugin-style architecture "forces" your development to be modularized, where the central stuff can be highly tested and rarely modified while you add plugins to enhance the system. » Posted by: Ryan at December 2, 2004 10:40 AM |