title: How to design an application in a modular way?
body: <p><strong>I am looking for pointers, suggestions, links, warnings, ideas and even anecdotical accounts about <em>"how to design an application in a modular way"</em>. I am going to use python for this project, but advice does not need to necessarily refer to this language, although I am only willing to implement a design based on OOP.</strong></p>
  
  <p>Here's some context to understand where I come from and what I am trying to achieve...</p>
  
  <hr>
  
  <p>My project will be a small application that will consume web services and display the results in a variety of ways, including:</p>
  
  <ul>
  <li>notification popup containing just the result of the call</li>
  <li>tab in the main window of the application with graphics plotted from retrieved raw-data</li>
  <li>buffer of messages (visible on domand) where results from various services will pile up</li>
  </ul>
  
  <p>The application will be released as free (as-in-speech) software, and for this reason I would like to <strong>make it really easy for other devs to write plugins/modules</strong> that will extend the functionality of the main application without needing to change the core code.</p>
  
  <p>At this point in time, <strong>plugins should essentially enable a developer to activate a new webservice, by defining the provider, the data manipulation (if any) and the way the data will be presented to the user</strong>.</p>
  
  <p>I have extensive experience in developing with <a href="http://drupal.org/" rel="noreferrer">drupal</a> which has a powerful modular approach, but that also follows a non-object-oriented design, so I suspect that for python, drupal design might not be the optimal solution.</p>
  
  <p>If this is of any importance - the core will be natively developed for GNU/Linux.</p>
  
  <p>Thank you in advance for your time!</p>