Page MenuHomePhabricator

Extensible package design
Closed, DeclinedPublic

Description

Pywikibot should be able to have extensions built on top of it, which use the core package and provide extra functionality that can be seemlessly used.

One of the very high priority issues that needs solving is an extensible family system, which is T104130, and has a WIP patch which needs polish. This is because Family classes will always be unstable, as they need to be updated when a site's configuration changes, which is an uncontrollable event.

Somewhat related is the need to distribute scripts, and they need to be distributed under a package name that is not scripts. (This doesnt require an extensible system, as we could simply distribute them as a package named pywikibot_scripts, but there may be some benefits in distributing them as subpackages named pywikibot.scripts.foo.)

Functionality in the core library that could be moved into subpackages includes:

  • Wikibase
  • ProofreadPage
  • Flow
  • Echo
  • WikiDataQuery

Fixes/Cosmetic changes could be an extensible, allowing custom fixes to be developed/shared/installed/enabled outside of the core library repo.

Looking further ahead, page generators could also be implemented in addons. moving WikiDataQuery out of the core library will require this (or some fancy footwork). extensible page generators will depend on the argparse rewrite : T76429

Event Timeline

jayvdb raised the priority of this task from to Medium.
jayvdb updated the task description. (Show Details)
jayvdb added a project: Pywikibot.
jayvdb subscribed.
Xqt subscribed.

I am strictly against splitting main parts of the framework out of the current project. On bot owner side it is more difficult to combine a working bot, on developers side it is more difficult to check the code when it is distributed on several parts.