[Typo3-dev] System Extensions, part II

Kasper Skårhøj kasper2004 at typo3.com
Tue Nov 16 15:41:18 CET 2004


Hi Folks,


Maybe you remember I send a mail in May about how many of the current
global extension will move to the sysext/ (System Extensions) folder. I
also attached a document which outlined the principles behind including
a list of actions I wanted to take and an invitation to comments. AFAIR
only a few responded so I now just did what pleased me best.

So here is the overview. From the next version of TYPO3 you will find
these extensions in the sysext/ folder:

aboutmodules
belog
beuser
cms
context_help
css_styled_content
extra_page_cm_options
func_wizards
impexp
indexed_search
info_pagetsconfig
install
lang
lowlevel
setup
sv
sys_action
sys_note
taskcenter
tsconfig_help
version
viewpage
wizard_crpages
wizard_sortpages



The ext/ folder (global extensions) will be empty from now on and you
can put your own extensions in there which you will have to manually
update from TER when needed. Probably we will distribute the global
extensions one last time with the next version as a service to you so
you will have an easy upgrade of TYPO3. The remaining global extensions
are:

cms_plaintext_import
conf_userts
direct_mail
direct_mail_subscription
extrep_wizard
feuser_admin
freesite
imagelist
kickstarter
metatags
phpmyadmin
plugin_mgm
quickhelp
rte
rte_conf
setoldpluginlist
skin1
static_file_edit
sys_messages
sys_notepad
sys_stat
sys_todos
sys_workflows
taskcenter_modules
taskcenter_recent
taskcenter_rootlist
tipafriend
ts_language_de
ts_language_dk
ts_language_fr
ts_language_nl
ts_language_no
tstemplate
tstemplate_analyzer
tstemplate_ceditor
tstemplate_info
tstemplate_objbrowser
tstemplate_styler
tt_address
tt_board
tt_calender
tt_guest
tt_news
tt_poll
tt_products
tt_rating

For people updating the core from CVS later today you should grab this
TAR ball: 



BACKGROUND.
This is a copy/paste from the document I send to the list in May if any
of you want to study the background for this change and the principles I
believe should guide our selection of system extensions:

<snip>


In the debate about TYPO3 version numbering, separation of core and
extensions and marketing of TYPO3 as a whole, we finally worded what we
are already doing by favouring certain extensions in the distribution
(like the global extensions): "System extensions"

"System extensions" is a word for the extensions that are considered
cornerstones in TYPO3 and the features of which are officially promoted
as something the system includes. This proposal is a suggestion for how
we can technically underline this approach in the future.

We will:

      * Remove *all* global extensions in the distribution (some of
        which will become "System extensions", see below)
        
      * Select all extensions that are now considered "System
        extensions" and include in the core folder "typo3/sysext/".
        
        


Pros:

      * Quality assurance: System extensions will represent "cream of
        the crop" of extensions, both in quality and general usefulness.
        
      * Wholeness: TYPO3 comprised of a) core and b) system extensions
        can better be understood as a whole. The feature list will
        reflect the combined features of core and system extensions.
        This is also what is marketed/communicated outwards. They also
        share branching/tagging for releases in CVS which in again
        reinforces the concept of a whole.
        
      * Larger "Core" team: The "Core developers" list will naturally
        include all authors of system extensions. These people will have
        access to core CVS (although initially restricted to their
        extension workspace). This might also make it more natural to
        recruit people into working on other parts of the core! Finally,
        the "one-man-show-fear" people have will hopefully be
        diminished, not because I loosen grip but because it becomes
        evident that system extensions is a part of the core and slowly
        is becoming the larger part of the system. Yet, we don't loose
        the advantages of having clearly identified working areas (each
        system extension) for the various core developers.
        
      * Easier CVS usage: We avoid the illogical situation that current
        global extensions that many consider part of "the core" are not
        in the Core CVS repository. They *will* be in Core CVS as
        "system" extensions (like "cms" and "lang"). We don't solve the
        symlink redundancy problem though.
        
      * Easier updates for the "whole system": Before, people had to
        keep track of updating both core AND sometimes system
        extensions. Now, they don't have to think about that anymore,
        just update the core and all system extensions will
        automatically follow.
        
      * Global extension space free for use: With an empty global
        extension space people can fully utilize this for their own
        installed extensions. Before this was a big problem because in
        reality the global extensions was distributed with the core just
        as much as the system extensions was. So in this new situation
        peopel can freely choose "global" or "local" install based on
        their preference without any (or much fewer) drawbacks related
        to upgrades.
        
        


Cons:

      * The size of the core will grow with the size of the new system
        extensions (but of course fall with the size of abandoned global
        extensions). Maybe that is not a problem.
        
      * The PHP developers experienced that having many extensions
        distributed with the core made it hard to manage that all
        contributers finished on time. So: We might face problems
        getting new releases out when someone did not deliver what they
        promised. But we can also introduce principles to solve this.
        One could be two-person maintainer ship. Another is the
        principle that if someone did not finish his work in time, we
        just take the old version from previous release.
        
        


Transitional phase:

The transistion will be easy. First release of this structure will
simply ship all global extensions that were not promoted to system
extensions (thus all extensions that came along in previous release are
still there, just some switched position). However this will be the last
time that happens - from that point the global extensions is a local
matter how people organize them and the system in general will not
impose any requirements on them.


Qualifying as System Extensions
This is the topic where we need some debate on the dev-list.



I think we should select the new collection of system extensions based
on two major criterias:

      * Feature coverage: That is when an extension (uniquely?) offers
        an announced feature of TYPO3. Examples are DAM, DBAL, RTE,
        RealUrl etc. Some types like "Guestbook" does not apply since
        many of them might exist and are low-complex.
        
        (A nice sideeffect of looking at it this way is that it will be
        clear what areas of features are not yet covered by TYPO3!)
        
      * Popularity: That is extensions which are so widely used by the
        community that it makes good sense to include it for convenience
        reasons. We might also assume that this is a sign of good
        quality. Examples are: Auto Make Template, Template Selector,
        Gallery etc. (see popular list on TYPO3.org)
        
        


Another set of criterias could be (and supplements the above):

      * Either so simple that no one would make an alternative
        
      * Or so complex that a single one should do it all
        
      * Never extensions where many flavors would select different
        approaches anyways!
        
        


Finally there are overall requirements to extensions:

      * Size: The extension must not be bloated in size (phpMyAdmin
        fails this test for example, being 2 MB or more).
        
      * Author: The author must be committed to maintenance and
        participate regularly as a core developer.
        
      * Documentation: Adequate documentation accomplished
        
      * CGL: Adheres to TYPO3 coding guidelines
        
      * Review: Can qualify for a "cigar" rating in a review.
        
      * Dual-maintainer: [Idea] At least two people are involved in the
        development, each having access to the CVS of the extension and
        authority to carry out changes (to avoid dependencies on a
        single author).
        
      * Goals: The extension must have a Todo list and the author/team
        behind must announce goals (if any) to achieve for each planned
        release of the core.
        
        

Selecing the new System Extensions
Next step is practical: To select which extensions will be promoted as
system extensions. This will include a look at a) the current global
extensions and b) the TER.



Global extensions:

In this table you will find all current global extensions listed. This
is an explanation of the columns:

      * Extension Key / Title: Obvious
        
      * New status: Indicates the suggested new state (this is up for
        debate!): 
        
              * "enable" / "include" : Means the extension is promoted
                to become a system extension and if set to "enable" it
                will be installed by default.
                
              * "-" : Means the extension will NOT be a system extension
                and has to be installed separately.
                
                
      * Pkg (package): [new concept] For extensions that are not system
        extensions anymore we thought it might make sense to define
        packages of extensions for various purposes. For instance there
        will be a collection of extensions which are typically useful
        for developers - they will be in a package and they can be
        installed / upgraded in one click. Technically this means we
        need to extend support in the extension manager so more
        extensions can be installed/upgraded in one go.
        
      * Cur (Current status): "S" means "Shy" extension - basically it
        indicates that this extension is currently one of those loaded
        by default in blank installations. "I" means "Internal" which
        means the extension is somehow favored by the system in a
        hardcoded way.
        
      * Needs: Sums up if there are any development plans for this
        extension or some other needs for it.
        
      * Maintainers: This tells who will be maintaining the system
        extension. In most cases there is a "?" sign and that means we
        need someone (2 people at least) to take over maintenance!
        Please volunteer!
        
        

</snap>


Finally, I have listed some suggestions to candidates that might go into
the sysext/ folder as well, all extensions which are currently not
global.

Please comment on this and suggest others if you think they fit the
criterias given above.





           Extension Key

               Reason

templavoila

Popular

Unique feature

automaketemplate

Popular

dbal

Cornerstone feature

dam

Unique feature

rlmp_officedisplay

Unique feature, but specific

realurl

Unique feature

rtehtmlarea

Unique feature, democracy (Offers
RTE available for both Linux and
Windows)

NOTE: May be one of the other
HTMLArea based RTEs instead! We will
select the best.

newloginbox

Popular

awstat

Popular

rlmp_tmplselector

Popular

de_phpot

Popular









-- 
- kasper

--------
Please notice NEW EMAIL ADDRESS for 2004!! (due to SPAM-contamination)
	
"kasper2004 at typo3.com"





More information about the TYPO3-dev mailing list