New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugins update system #3559

Closed
rcubetrac opened this Issue Nov 9, 2011 · 4 comments

Comments

Projects
None yet
1 participant
@rcubetrac
Copy link

rcubetrac commented Nov 9, 2011

Reported by emi on 9 Nov 2011 13:19 UTC as Trac ticket #1488175

Hi there,

I've used update.sh to update some of my Roundcube installations (plural!). It has been much better than prior versions, where I had to do this manually. But now, the problem (manual tedious work) is with plugins.

Plugin system is great: it gives us the possibility of extending Roundcube without needing to touch core files or having to wait for a core update. Now, we are installing a bunch of plugins taken from many different providers (sourceforge, googlecode, etc) to personalize each installation, and maybe it would be a good idea to begin a better organization system for this great feature.

So, automatic plugins update would be cool. If you agree, plugin repository or plugins itself (or both) must be re-thinked a little bit:

  • Plugin repository: make a table for each plugin containing dependencies information. These dependencies could be other plugins, core and plugins versions, and PHP extras. Each dependency would have a direct link to its downloadable file (not to the download page, but the download file directly) or a script/PHP function/whatever you prefer which does the work.
  • Plugin itself: each plugin could add some triggers (class member functions) or a separate file (as Drupal plugins, like my_module.info or a my_plugin.install.inc.php or my_plugin.update.inc.php) to accomplish or complete the above table functionalities.

Whichever solution we decide to use, it should have these (and maybe others) functionalities/information:

  • A version number
  • Core version dependency
  • Other plugins dependency (and its versions)
  • PHP plugins dependency (and its versions)
  • config.inc.php PATH, so updater can merge old config with new ones (as it does with core config)
  • SQL install and update functions or scripts
  • (Probably) Add a table on Roundcube database (as Drupal 'system') where we save all plugins used, its versions, dependencies, etc.
  • (Desirably) A function on each plugin that performs checks to ensure installation is correct and, if its not, how to solve it.

All of these changes might leave Roundcube installing and updating completely painless and comfortable.

I know it's a lot of work, so if you decide to do this, you can focus on writing what update system should we use so me (and probably others) can write patches for core and plugins to accomplish it: you decide, we work, you review and apply patches ;)

See you soon!!
emi

Keywords: plugins, update, version control
Migrated-From: http://trac.roundcube.net/ticket/1488175

@rcubetrac

This comment has been minimized.

Copy link
Author

rcubetrac commented Jun 13, 2014

Comment by emi on 13 Jun 2014 13:31 UTC

It's probably done through composer. Maybe mark this as fixed would be fine.

@rcubetrac

This comment has been minimized.

Copy link
Author

rcubetrac commented Mar 12, 2015

Comment by @thomascube on 12 Mar 2015 17:15 UTC

Our repository at plugins.roundcube.net with the composer-based plugin installer does exactly that. The latest version of the installer also supports database schema initialization/updates as well as install/upgrade/uninstall scripts (1)

@rcubetrac

This comment has been minimized.

Copy link
Author

rcubetrac commented Mar 12, 2015

Status changed by @thomascube on 12 Mar 2015 17:15 UTC

new => closed

@rcubetrac

This comment has been minimized.

Copy link
Author

rcubetrac commented Mar 12, 2015

Milestone changed by @thomascube on 12 Mar 2015 17:15 UTC

later => 1.0.0

@rcubetrac rcubetrac closed this Mar 12, 2015

@rcubetrac rcubetrac added this to the 1.0.0 milestone Mar 20, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment