Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 775261
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T19:15:41+00:00 2026-05-14T19:15:41+00:00

A repeating theme in my development work has been the use of or creation

  • 0

A repeating theme in my development work has been the use of or creation of an in-house plug-in architecture. I’ve seen it approached many ways – configuration files (XML, .conf, and so on), inheritance frameworks, database information, libraries, and others. In my experience:

  • A database isn’t a great place to store your configuration information, especially co-mingled with data
  • Attempting this with an inheritance hierarchy requires knowledge about the plug-ins to be coded in, meaning the plug-in architecture isn’t all that dynamic
  • Configuration files work well for providing simple information, but can’t handle more complex behaviors
  • Libraries seem to work well, but the one-way dependencies have to be carefully created.

As I seek to learn from the various architectures I’ve worked with, I’m also looking to the community for suggestions. How have you implemented a SOLID plug-in architecture? What was your worst failure (or the worst failure you’ve seen)? What would you do if you were going to implement a new plug-in architecture? What SDK or open source project that you’ve worked with has the best example of a good architecture?

A few examples I’ve been finding on my own:

  • Perl’s Module::Plugable and IOC for dependency injection in Perl
  • The various Spring frameworks (Java, .NET, Python) for dependency injection.
  • An SO question with a list for Java (including Service Provider Interfaces)
  • An SO question for C++ pointing to a Dr. Dobbs article
  • An SO question regarding a specific plugin idea for ASP.NET MVC

These examples seem to play to various language strengths. Is a good plugin architecture necessarily tied to the language? Is it best to use tools to create a plugin architecture, or to do it on one’s own following models?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T19:15:42+00:00Added an answer on May 14, 2026 at 7:15 pm

    This is not an answer as much as a bunch of potentially useful remarks/examples.

    • One effective way to make your application extensible is to expose its internals as a scripting language and write all the top level stuff in that language. This makes it quite modifiable and practically future proof (if your primitives are well chosen and implemented). A success story of this kind of thing is Emacs. I prefer this to the eclipse style plugin system because if I want to extend functionality, I don’t have to learn the API and write/compile a separate plugin. I can write a 3 line snippet in the current buffer itself, evaluate it and use it. Very smooth learning curve and very pleasing results.

    • One application which I’ve extended a little is Trac. It has a component architecture which in this situation means that tasks are delegated to modules that advertise extension points. You can then implement other components which would fit into these points and change the flow. It’s a little like Kalkie’s suggestion above.

    • Another one that’s good is py.test. It follows the “best API is no API” philosophy and relies purely on hooks being called at every level. You can override these hooks in files/functions named according to a convention and alter the behaviour. You can see the list of plugins on the site to see how quickly/easily they can be implemented.

    A few general points.

    • Try to keep your non-extensible/non-user-modifiable core as small as possible. Delegate everything you can to a higher layer so that the extensibility increases. Less stuff to correct in the core then in case of bad choices.
    • Related to the above point is that you shouldn’t make too many decisions about the direction of your project at the outset. Implement the smallest needed subset and then start writing plugins.
    • If you are embedding a scripting language, make sure it’s a full one in which you can write general programs and not a toy language just for your application.
    • Reduce boilerplate as much as you can. Don’t bother with subclassing, complex APIs, plugin registration and stuff like that. Try to keep it simple so that it’s easy and not just possible to extend. This will let your plugin API be used more and will encourage end users to write plugins. Not just plugin developers. py.test does this well. Eclipse as far as I know, does not.
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm adding repeating events to a Cocoa app I'm working on. I have repeat
I need to find two adjacent repeating digits in a string and replace with
This question was inspired by one I asked almost a year ago - any-orms-that-work-with-ms-access-for-prototyping
Our shop is set up with a Team Foundation 2005 server but all development
In a rails (2.3.8) app, my server log in development mode shows lines like
His, Could maybe some of you share their experiences of mobile development on GWT?
This has implications on the way I interact with my modal controllers. When I
A few questions regarding this topic: 1) What's the largest development team (doing actual
I am using some dell workstations(running WinXP Pro SP 2 & DeepFreeze) for development,
Are there anyone with experiences/examples on releasing early/releasing often for commercial software? Does it

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.