Skip to content

Split up framework into minimal pieces #262

@kiesel

Description

@kiesel

Scope of Change

The collection of classes delivered with the framework will be shrinked to an absolute minimum. Classes required for bootstrapping and very basic and common operations will be shipped as the "XP Framework Core", others will be available as separate library.

Rationale

The XP Framework today comes with a collection of standard implementations forming the whole classbase; this includes, for example, scriptlet package as the foundation for HTTP processing, rdbms to perform database queries, img for image manipulation.

While they're very frequently used, they don't form the very base of the framework. Separating them is supposed to support

  • implementation variance
  • separate release cycles
  • shrinking the size of XP applications (only include what's required)
  • ...

Functionality

Split

The following packages will remain in core:

  • lang
  • io
  • peer
  • util
  • text, including:
    • text.encode
    • text.format
    • text.regex
    • text.util
    • classes text.CSVGenerator, text.StringUtil

The following packages will become separate modules:

  • gui
  • img
  • math
  • rdbms
  • remote
  • scriptlet
  • security
  • text.csv
  • text.doclet
  • text.parser
  • text.spelling
  • unittest
  • webservices
  • xml

Modules provided by the XP Framework as a stable and reliable base continue to be hosted within the XP Framework organisation at GitHub.

Release

The framework and modules will not share a release cycle; their version numbers, will diverge, consequently. In order make that clear, the following applies to their versioning:

  • XP Framework Core will continue to carry its current version number
  • all modules will be reset to version 1.0.0

Dependencies

All modules depend on XP Framework Core, but modules may also depend on another module (such as webservices) depend on xml. Thus, to efficiently manage this, a dependency management should be used.

Core modules should have no external dependencies - it should be self contained.

Security considerations

Speed impact

Speed impact by adding more paths to an include_path is expected; if that develops to be grave, effort must be spent to build packaging forms that counterwork that effect (eg. building uber-xars).

Dependencies

Related documents

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions