Author Topic: Suggestions to plugin-system  (Read 12496 times)

ttrepper

  • Newbie
  • *
  • Posts: 12
    • View Profile
Suggestions to plugin-system
« on: November 13, 2009, 10:59:31 am »
Hi all,

if I have checked the plugin-system in the right way, every developer has to create a zip containing his files in that way, that the folders in the archive match the folders-structure of opengoo. I find this not very usable, because
  • one developer can overwrite changes from another one
  • every update of opengoo makes plugins unavailable

I have found a very well designed plugin system with makes it easy to develop and maintain plugins at dotProject (http://www.dotproject.net/), but that framework seems to be dead.
The way is as follows:
  • There is a plugin-folder in the application
  • Every developer creates a zip, which will be extracted into this folder and creates a subfolder for the plugin
  • All stuff needed by the plugin is *inside* the subfolders-structure
  • Opengoo-Administration-Panel reads all subfolders of plugin-folder and knows about every installed plugin
  • Every plugin can be installed, removed, activated and deactivated and the state is remembered in the db by opengoo itself
  • This works, because in every plugin is a setup.php with corresponding methods. In install for example the create-table statements will be executed and in remove-method the drop tables. The update-method should have a switch inside to handle the plugin-versions and fires alter-table-statements
  • The name of the plugin is also defined in setup.php and some other attributes.
  • This ensures, that the whole control and maintence of the plugin is at the developer
  • The admin can with this way control all plugins, order them (display-order), activate and deactivate them
  • The admin can configure them, if the methods are implemented
  • The plugin can make contributions to dashboard and the admin/user can control it
  • The plugin is not affected on updates (except api-changes) and other plugins

I currently find this plugin-system here a little be complicated and difficult to extend.

What are your opinions?

Thomas
« Last Edit: November 13, 2009, 11:24:08 am by ttrepper »

ttrepper

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Suggestions to plugin-system
« Reply #1 on: December 07, 2009, 06:19:06 am »
No ideas? Did I miss anything or misunderstood the current plugin-system?

Pet

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 638
  • Always mining for solutions!
    • View Profile
    • The Bet!
Re: Suggestions to plugin-system
« Reply #2 on: December 07, 2009, 06:14:52 pm »
You could try PM ignacio or conrado for a follow-up. They've been super-busy and may not have had a chance to get to this yet.
Support OpenGoo - Sponsor a Feature! | Follow me on Twitter | OG Support Chat | Did you turn debugging on?

ignacio

  • Hero Member
  • *****
  • Posts: 1703
    • View Profile
Re: Suggestions to plugin-system
« Reply #3 on: December 14, 2009, 08:53:30 am »
Yes, we do need a nice plugin system for OpenGoo. The one you describe could be an alternative.

But there is something that you missed from our current "plugin system" (if it can be called like that :)). You can keep plugins after an upgrade, you just need not overwrite existing OpenGoo files (or your files will be overwritten on upgrade), and you should extend functionality by adding new files (maybe prefixed by your plugins name to avoid collisions) and using hooks. Hooks are function calls throughout the code that can call a dynamically loaded plugin's function. We haven't developed this extensively yet, which means that there may not be a hook for some particular thing that you want to do, but we can add it on demand if a developer asks us. We also don't have a way to automatically install or uninstall a plugin. You would have to delete the plugin's hooks file and perform the DB queries to install or uninstall manually  or through a script supplied by the plugin.

In any case, our plugin system is not complete nor well documented and should be improved. Would you like to give us a hand with this?

ttrepper

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Suggestions to plugin-system
« Reply #4 on: December 14, 2009, 09:25:26 am »
Hi ignacio,

thanks a lot for your post and your interest in my (helping) hands. I am currently very busy, but I will of course help you with plugin-system. :D This is in my opinion the most important thing to develop, implement and refactor, because every software-system in the world is extendable with plugins and an easy plugin-system will increase opengoo's community very quickly which then means, that you will get more feedback, more plugins, more downloads, etc...

If it is ok for you I will write a detailed document, which describes the plugin-system I suggested, and discuss it with you and with the community, ok? For developing the system I now cannot estimate my free time, ok?

Am I allowed to access the wiki or can you create a page for me, which I am allowed to modify?

Thanks a lot

Thomas

ignacio

  • Hero Member
  • *****
  • Posts: 1703
    • View Profile
Re: Suggestions to plugin-system
« Reply #5 on: December 14, 2009, 10:18:21 am »
Thanks!

There's a wiki for developers at: http://wiki.opengoo.org/doku.php/developers . I think you should be able to edit that page, but if not just tell me what wiki page you want and I'll create it.

ttrepper

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Suggestions to plugin-system
« Reply #6 on: December 14, 2009, 10:22:23 am »
Hi ignacio,

thanks a lot. I tried to log in with my forum-name, but this was not possible. Then I tried creating a new user and the wiki said:

Looks like there was an error on sending the password mail. Please contact the admin!

Could you please have a look at this?

Thomas

cabeza

  • Administrator
  • Hero Member
  • *****
  • Posts: 1004
    • View Profile
    • Feng Office
Re: Suggestions to plugin-system
« Reply #7 on: April 02, 2010, 01:42:16 pm »
Hello ttrepper,


We've created a page in the wiki for discussion on these topics. It's about plugin requirements ( inspired on a post by bmw502).

I see that you have a lot to share.

Could you still not register a wiki user?
« Last Edit: April 07, 2010, 05:25:39 pm by cabeza »

allenlook

  • Volunteer Moderator
  • Sr. Member
  • ****
  • Posts: 312
    • MSN Messenger - sii_lookal@hotmail.com
    • View Profile
    • SI Group, Inc.
Re: Suggestions to plugin-system
« Reply #8 on: April 12, 2010, 04:52:36 pm »
I do agree that a plug-in system would be the most important feature FengOffice could implement - over and above anything I've requested to date.

That would allow anyone to develop new features for FengOffice, and would have allowed me to integrate Gantt charting and Blogging much more cleanly than I did by editing native FengOffice files.
I am a volunteer moderator.  Any statements, opinions or observations I contribute are solely mine and are not necessarily shared by the makers of Feng Office.

goonerforlife

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Suggestions to plugin-system
« Reply #9 on: January 12, 2011, 10:21:15 am »
I know this thread is fairly old but im fairly new here. Did anything come of the new plugin system?

I have been making some new widgets and some other tweaks that i should be able to share.
Particularly integrating a new charting system (i want to expand it before i share it but the basic idea is projects or tasks over a time period. these are also links to the task/milestone/project.)

Cheers,
Goonerforlife

Murz

  • Full Member
  • ***
  • Posts: 147
    • View Profile
Re: Suggestions to plugin-system
« Reply #10 on: January 15, 2011, 11:20:06 am »
We can look at the Drupal CMS written in PHP too, it have very good hooks system, will be good to do something like this in FengOffice, with thouse hooks we can intercept each action for database write, read, template or form building and do the changes in the plugin function, here is the description: http://api.drupal.org/api/drupal/includes--module.inc/group/hooks/7
So, if we add ability to intercept each fengoffice action with plugin, we create the good field for many plugins.