Motivation
The TWiki community has been discussing a TWiki application packager and installer feature for TWiki for a long time. Initially I brought it up in 2005 at
TWikiAppPackageHowToDiscussion, then it was discussed again in 2008 at
RequirementsForATWikiApplicationPackager. The
JerusalemReleaseFocus covers a packaging standard for TWiki apps. This proposal does just that. A separate proposal will cover a related
TWikiAppRepository.
Needs
As a
TWiki user I want to:
- browse available apps from within my TWiki installation
- see for each app,
- nice thumbnails, 200px wide
- title
- summary
- category
- have a button to install an app
- select destination web (if prompted)
- enter base name of app (if prompted)
- have a place to configure the app (if prompted)
- upgrade the app with a single push of a button
As a
TWiki site administrator I want to:
- decide if users can browse master repository on TWiki.org, or only local repository
- have optionally a local repository:
- select some or all apps of the master repository on TWiki.org
- do sync of master repository to local repository manually with push of button, or automatically via nightly cron
- add my company's applications to the local repository
As a
TWiki app developer I want to:
- have a simple way to:
- create an app
- package an app
- upload an app to the repository with push of a button
- not learn Subversion (e.g. tailor to casual programmers)
- specify pages that make up an app (manifest)
- have upgrade infrastructure
- for each page on upgrade, specify if: overwrite if exists, copy only if missing
- be able to specify install web (if needed)
- be able to specify base name of app (if needed)
- be able to monetize my apps
There are idealistic needs, no need to have everything implemented in the first release.
Overview
A TWiki application consists of a set of pages that make up the application logic. For example, the very simple
MeetingMinutes application consists of the
MeetingMinutes homepage and a
MeetingMinutesTemplate page. TWiki applications are made up of
TML,
HTML, and possibly some
CSS and
JavaScript. Users typically fill out forms to create structured content that can be queried easily.
Basic features of a TWiki application packager and installer:
- Standard to define what pages make up a TWiki application, e.g. a manifest
- Automatic package build of set pages into a single archive file based on manifest
- App repository on twiki.org for free applications
- At a later point, separate repository for payed-for applications
- Way to publish app packages on twiki.org
- Way to categorize app packages
- Easy way to browse app repository from within a TWiki installation
- Easy way to install an app, also my end-users, e.g. non-administrators
- Easy way to upgrade an app
- Uninstall feature?
Description and Documentation
New TWikiAppsPlugin:
- Create new TWikiAppsPlugin to manage packaging and installation of TWiki apps.
- Plugin is pre-installed in TWiki Jerusalem release, and can be installed in older releases.
- Documentation of TWiki app packaging and installation.
New web:
- New TWikiApps web for app developer to create and package apps, and for locally installed apps.
- TWiki.org app repository is also in a new TWikiApps web.
For TWiki app developer:
For TWiki site administrator:
- Configure flag
{Plugins}{TWikiAppsPlugin}{LocalRepository}, 0 or 1, default 0.
- If
1, users can browse only local repository in TWikiApps web, e.g. apps the admin decided to show.
- If
0, users locally browse the master repository of the master repository on TWiki.org.
- TWiki.TWikiApplicationAdministration page, for TWiki Admins only, to see list of available apps in master repository on TWiki.org, with option to manually sync to local repository. Example:
For TWiki users:
- Browse TWiki app repository and install apps
- An app can be installed in multiple places (webs and/or app base name), i.e. a special report is needed that shows installed app instances (not installed apps)
- Installing/upgrading an app automatically resolves the dependencies.
- Show an error message if a user does not have the permission to update the web(s) where the app & dependencies are installed.
- TWiki.TWikiApplicationRepository page. Example:
Example
This uses the MeetingMinutes app as an example.
Topic: MeetingMinutesApp
- This is the app documentation page, used by the TWiki app browser
- ApplicationForm with fields:
- Title
- Summary
- Image - for 200px wide app icon image, max 200px high
- Screenshot1 ... Screenshot4 - up to 4 600px wide screenshots
Topic: MeetingMinutesAppManifest
- This is the application manifest
- Table:
| Type | Value/Name | Attributes | Description |
| Version | 2012-11-25 | | Meeting Minutes application version |
| Topic | MeetingMinutes | O | Main app page. Attribute O: "overwrite on upgrade", C: "copy once only" |
| Topic | MeetingMinutesTemplate | C | Meeting template page |
| Require | SomeOtherApp | 2012-10-01 | (Just a fictitious example of a dependency on another app) |
| Require | SpreadSheetPlugin | 2012-10-01 | (Just a fictitious example of a dependency on a plugin) |
Impact
Implementation
--
Contributors: PeterThoeny - 2011-09-27
Discussion
This feature has high priority based on marketing discussions in
JerusalemReleaseMeeting2012x12x07, e.g. is one of the key features of the
JerusalemRelease.
--
PeterThoeny - 2012-12-07
Discussed at
KampalaReleaseMeeting2015x07x02:
- This is implemented as a new TWikiAppsPlugin (work in progress), this status change to ImplementedAsExtension.
- A new proposal will be done to add the TWikiAppsPlugin to the TWiki core distribution.
--
Peter Thoeny - 2015-07-02