create new tag
, view all tags
InterfaceThread - FeaturesThread Way back when, in the dark ages of October 1999, AndreaSterbini made the ModularizationAndCommonTwiky topic, which for some reason went nowhere. Good points, and an interesting first list. The list is quoted here:

More in detail, these are some features already present here and there that I would like to see in CommonWiki :

  • a StorageModule devoted to the interaction with either:
    • a database (DB, postgres, mySql ...)
    • a repository (RCS, VCS, ...)
  • a VisualizationModule for the production of pages with
    • templates
    • different languages
    • Page features (counters, categories, register interest on a single page ...)
  • a ParserModule to define:
    • different text formalisms (for automatic generation of html/xml)
    • different ways to define a WikiName
    • different ways to produce links (also between Wikis)
  • an InputModule to generate topics by means of:
    • web forms (like in the WikiRegistration)
    • email (MIME also)
    • the current Edit form
    • to produce append-only pages
  • a ManagementModule for the wikimaster operations
    • creation/renaming/moving of a complete WikiWeb
    • user registration/authorization handling
    • creation/renaming/moving a topic (between wikiwebs also)
    • management of templates
    • management of WorkFlow
  • an AuthorizationModule for the cases where different parts of the same site must be managed by different people ... (I'm in a University .. .I'm thinking to Staff, Professors, Students and so on ...)
    • some way to define the authors allowed to modify a set of pages
    • management tools to add/move/expire authors
  • PluggableSearch:

-- AndreaSterbini - 09 Oct 1999

Is this how it should be done? Should we do OOTWiki?

-- 02 May 2000

I'm absolutely certain the time has come to modularize and OOTWiki, but I'm thinking of the Perl-ish Tie::Whatever kind of OO. I vote against inheritance as the Way, I'd rather Use-a than Be-a. I propose that we design an interface spec, that it be the simplest possible spec, that we decide very firmly on core features and leave the hoo-hah to plugins. We vote, Peter decides, we volunteer. I think the first step is the interface spec, followed by a Wiki/Base.pm that provides a "traffic cop" (API glue) and very basic functionality... kind of the core language for writing a TWiki.

--Main.KevinKinnell - 02 May 2000

All this sounds like the next logical step, but it also means almost a complete rewrite of TWiki, e.g. a lot of work. One advantage of modularizing is that we have more scripts, e.g. less chance of edit conflicts among developers. I propose to keep adding incremental features until we have a clearly defined design of the new modular TWiki. Feel free to start braintorming on design issues.

-- PeterThoeny - 03 May 2000

Some work needs to be started on something along these lines. Once we've got a good breakdown of the various areas in the application when can then work on improving some specific feature set discussed elsewhere.

We have to decide how we want to create the modularization. Probably the best way is a perl package hierarcy. ie. from above:

  • TWiki::Store
  • TWiki::Parse
  • TWiki::Visualize
  • TWiki::Input
  • TWiki::Manage
  • TWiki::Access

I'm not sure if this is the best break down of the application structure, but that can be discussed further.

In order to start work on this, I'll get working the ::Store side of things. Further discussion on this will be in PackageTWikiStore.

-- NicholasLee - 12 Jun 2000

Sergio Fanchiotti has written APW (AnotherPerlWiki) deriving it from TWiki and wiki and is made of several classes. (and it's CPLed).

Please, master perl-ers, have a look at it, there is a chance that part of the modularization is ready.

-- AndreaSterbini - 21 Sep 2000

No unfortunately not, I've been too busy in RL. I'm working slowly on some basically modularization at the moment. The most useful thing people could do though, that I'm missing, it read PackageTWikiStore and comment on it.

APW looks interesting, I'll consider how we might be able to use it in TWiki.

-- NicholasLee - 21 Sep 2000

I started with the restructuring of TWiki. This is the first step of modularizing TWiki. The "itch" was to make it right for the new TWikiPluginAPI.

The first step is to create directories that represent future TWiki modules. Here is how the moved files look like (not renamed files not listed). All relative to twiki/bin.

moved files: moved to:
wiki.pm TWiki.pm
wikicfg.pm TWiki.cfg
wikiaccess.pm TWiki/Access.pm
wikiprefs.pm TWiki/Prefs.pm
wikistore.pm TWiki/Store.pm
wikisearch.pm TWiki/Search.pm
new files: moved to:
wikiplugins.pm TWiki/Plugins.pm
plugins/DefaultPlugin.pm TWiki/Plugins/DefaultPlugin.pm

Change has not yet been commited to TWikiAlphaRelease. Stay tuned.

-- PeterThoeny - 10 Feb 2001

Commited the changes to TWikiAlphaRelease in CVS. No functional changes have been made, but extensive structural changes related to introducing TWiki packages. With that we had to clean up the variable scope as well. Please note that I did only limited testing, thus it might not be as stable as the usual Alpha releases. We will do some more restructuring in the coming days.

Package: Old Files: Renamed To:
TWiki wiki.pm TWiki.pm
(part of TWiki) wikicfg.pm TWiki.cfg
TWiki::Access wikiaccess.pm TWiki/Access.pm
TWiki::Plugins wikiplugins.pm TWiki/Plugins.pm
TWiki::Plugins::DefaultPlugin plugins/DefaultPlugin.pm TWiki/Plugins/DefaultPlugin.pm
TWiki::Prefs wikiprefs.pm TWiki/Prefs.pm
TWiki::Store wikistore.pm TWiki/Store.pm
TWiki::Search wikisearch.pm TWiki/Search.pm

-- PeterThoeny - 11 Feb 2001

Some things that Twiki desparately needs: (after having had to make a few installs & upgrades).

  • Upgrading a twiki installation often means a lot of faffing about with data & template directories. I'm currently using a "webs" directory & a bunch of symbolic links to make this task somewhat simpler. DataAndCodeSeparation

These are just a couple of practical concerns, but needs addressing IMO ASAP.(I'm working on both)

-- MichaelSparks - 03 Mar 2001

Once the TWikiBetaRelease is stabilised for feature freeze and well into release mode, I intend to create an experiment branch in the CVS. I dont want to do work other people have done already, so I'll probably speed up the patch-commit to branch cycle somehow. This should to speed up development in this area. Note: I expect because of this branch the will be broken 50% of the time.

My intention then in this branch, as I find time:

i) Rip out TWiki::Store's guts and create a slight refactoring that moves toward TWiki::Store::RCS with simple functional redirection from a TWiki::Store API. ii) Create a MakeMake Makefile.PL type install process.

With the API formed in i), with the next step would be: iii) Pure objectisation of TWiki::Store with some work say on TWiki::Store:CVS or ::DBI to explore problems in the API.

This with ii) should allow iv) upgradable data path via TWiki::Store.

ie. DataAndCodeSeparation

Its not that straight forward of course because of the dependancy problems between the bin/binaries and templates/, but its a step in that direction. I cant make this all happen overnight unfortunately, wink but this is the path.

The API will provide an minimum spec that a storage subsystem should provide in terms of information to the other parts of TWiki. I figure most of the important Storage related functions are actually in TWiki::Store at present. Its just a matter of making them generic and 'normalising' the result.

-- NicholasLee - 06 Mar 2001

At the start of the page a question is asked: Should we do *OOTWiki?* Modularisation is partly done/in progress... But to what extend is TWikiOO considered?

I've got no idea what it would cost in terms of performance to have an OO backend, but it's not to heavy, I would vote for TWikiOO.

Why use OO?

  • Easy extendible backend, besides using the PlugIns
  • Upgrading to new release should go easier without losing the local made extra's. These modifications are made in new objects, only the parent would package would change...

Why not use OO?

  • Performance costs?? (could somebody put some numbers to this??)
  • Requires PerlOO knowledge

Yes, going OO requires another rewrite of TWiki. However, it should be possible to do the change into OO gradually, reusing most of the available libraries. Currently I'm doing some coding using a TWikiOO lib besides the provided TWiki lib, and parts of my TWikiOO lib now directly call the original functions (thus now only providing a TWikiOO shell).
This approach could be used to develop and test a TWikiOO without making the base code unstable again.

When doing some minor stuff in TWikiOO, I noticed that a very good design is needed on the overall object structure (what is put where, how to call them, how to let them interact)...

KevinKinnell referred to using tie kind of OO. I'm not that into tie and OO that a bell's ringing. Some kind of pointers to examples would help... I've found some references, but that's only about hashes and arrays tied to make them also usable as objects.

-- HansDonner - 19 Sep 2001

Hans, is this moving forward on your end? Otherwise?

-- MikeMannix - 27 Dec 2001

Edit | Attach | Watch | Print version | History: r21 < r20 < r19 < r18 < r17 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r21 - 2004-11-20 - MartinCleaver
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2018 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.