View Issue Details Jump to Notes ] Wiki ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0008514mantisbtotherpublic2007-10-27 20:502008-04-19 04:10
Assigned Tojreese 
PlatformOSOS Version
Product Version 
Target Version1.2.0a1Fixed in Version1.2.0a1 
Summary0008514: Support a dynamic and lightweight plugin system
DescriptionMantis would certainly benefit from having a pluggable interface for supporting new features and abilities. The implementation needs to be dynamic and lightweight, loading only what is absolutely necessary for a plugin to work, and without a large amount of overhead to manage and utilize the plugins.

I have implemented a very simple, but powerful, event-based plugin system that uses very little overhead for normal operations, and defers loading files until they are needed. With no plugins installed, there is nearly no overhead.

At the moment, the plugin system is in a stable state, looking for feedback from anyone willing to test the patch and post their thoughts and reactions. The patch includes two basic plugins: one is the example from the wiki page, the other is a debug plugin for assisting with plugin development.
Additional Information [^]
TagsNo tags attached.
Attached Filespatch file icon mantis-plugins-2007-10-28.patch [^] (45,585 bytes) 2007-10-28 12:55 [Show Content]
patch file icon mantis-plugins-2007-10-30.patch [^] (47,819 bytes) 2007-10-30 15:28 [Show Content]
patch file icon mantis-plugins-2007-11-01.patch [^] (50,196 bytes) 2007-11-01 20:42 [Show Content]

- Relationships
has duplicate 0003361closedjreese How about plugins?! 

-  Notes
User avatar (0016005)
jreese (reporter)
2007-10-28 12:57

I've attached a new version of the patch that conforms to the new Mantis version as changed in 0008063, and that uses the new db_query_bound() introduced by Paul.
User avatar (0016032)
jreese (reporter)
2007-10-30 15:34

Recent insights have lead me to realize that the event system that I created for plugins should really be separated into its own separate API. I have also moved initialization of the new event system before the rest of the feature API's. This will allow for other API's and future additions to take advantage of event-based processing for various reasons.

I've refactored the Plugin API to make use of the separated event system, and testing shows that I have not (yet) introduced any new problems with this decision. This actually makes both pieces simpler to maintain, and there is almost negligible increase in diff size.
User avatar (0016059)
jreese (reporter)
2007-11-01 20:44

Latest patch generated from old CVS Head (don't have time to move all my changes between Git repos =\ ). This has most of the suggestions made by Victor in it. The exceptions are ones that I felt either were inconsistent with the rest of Mantis, or made the code less readable with no functional change. I'm hoping this will be the last large set of changes, and that I can get this submitted to SVN by the end of the week.
User avatar (0017262)
jreese (reporter)
2008-03-05 11:34

At this point, I think we can consider the plugin system stable enough to mark this as resolved.

- Issue History
Date Modified Username Field Change
2007-10-27 20:50 jreese New Issue
2007-10-27 20:50 jreese Status new => assigned
2007-10-27 20:50 jreese Assigned To => jreese
2007-10-27 20:50 jreese File Added: mantis-plugins-2007-10-27.patch
2007-10-28 12:11 jreese File Added: mantis-plugins-2007-10-28.patch
2007-10-28 12:12 jreese File Deleted: mantis-plugins-2007-10-28.patch
2007-10-28 12:12 jreese File Deleted: mantis-plugins-2007-10-27.patch
2007-10-28 12:55 jreese File Added: mantis-plugins-2007-10-28.patch
2007-10-28 12:57 jreese Note Added: 0016005
2007-10-30 15:28 jreese File Added: mantis-plugins-2007-10-30.patch
2007-10-30 15:34 jreese Note Added: 0016032
2007-11-01 20:42 jreese File Added: mantis-plugins-2007-11-01.patch
2007-11-01 20:44 jreese Note Added: 0016059
2008-01-07 08:53 DGtlRift Relationship added parent of 0003361
2008-03-05 11:32 jreese Relationship replaced has duplicate 0003361
2008-03-05 11:34 jreese Status assigned => resolved
2008-03-05 11:34 jreese Fixed in Version => 1.2.0
2008-03-05 11:34 jreese Resolution open => fixed
2008-03-05 11:34 jreese Note Added: 0017262
2008-04-19 04:10 vboctor Status resolved => closed

MantisBT 1.2.17 [^]
Copyright © 2000 - 2014 MantisBT Team
Time: 0.1365 seconds.
memory usage: 3,295 KB
Powered by Mantis Bugtracker