As mentioned by Anthony and Nick here :
http://groups.google.com/group/joomla-3pd-extension-standards/browse_thread/thread/618404c01f3f92e9
(it would be great if you two could copy your comments to here)
We should come up with reliable methods of implementation for each of
the standards.
- It encourages other developers to participate if things are just
plug(in) and play
- it reduces the chances of conflicts between versions (lifestream vs
NB example from Nick)
- it will hopefully make it easier to create extensions implementing
the standards, than to create them not implementing it (providing huge
incentives to do it)
It will be impossible to come up with a universal implementation
method as we are dealing with differing technologies - a plugin is
useless for implementing a standard on HTML and CSS classes, but
essential to implementing Javascript loading.
Anthony mentioned that he is concerned about having to get his users
to install another plugin, this is a valid concern.
Nick mentioned he is concerned that will end up with conflicting
versions of the specified plugins on sites. Also a valid concern.
I think both of these could have a technological, or social answer
though.
e.g. Signing up to a spec requires you to ship the latest version at
all times, and we hold off new versions of plugins until 80% of
signees are ready.
One thing that should be noted is that going down this path is almost
definitely going to require all of us to make some changes in how we
build and distribute our software. All of us are doing our own thing
right now, so it will be difficult, if not impossible, to bring that
"behavior soup" together without having to make changes.
The aim however is to make sure the rewards greatly outweigh the cost
of those changes. I feel that this is achievable.
To reply to a few of Nicks, points:
> * *Future-proof*. The exposed API should be immutable, or provide
> backwards compatibility whenever it's updated. We should do it
> like Microsoft did in the transition from Windows 3.1 to Win32s to
> Windows 95 to Windows XP to Windows Vista. By providing a
> backwards compatible API, applications written for Windows 3.1
> were easily ported to Windows Vista with minimal changes (only
> about the parts which had to go away). Diametrically opposite to
> this approach is Joomla! 1.0 to 1.5 to 1.6. Each of those version
> changes completely screwed up our code and we had to make
> extensive changes. IMHO, only the 1.0 to 1.5 upgrade was justified
> for breaking the site. The 1.5 to 1.6 was a blunder. APIs changed
> for no reason and caused a lot of grief. Let's not do that.
Agreed, there should never be changes to the existing API without good
reason. If a feature must be reworked, then we should probably create
an entirely new API rather than rework an old one. That woudl allow
fro progressive upgrades without breaking sites.
Well thought out specs should help alleviate this problem however.
> * *Dependency tracking*. We need a method to track down
> dependencies. For instance, my extension should indicate that it
> depends on jQuery and jQuery UI. If they are not available they
> should be installed, transparently. This is similar to a Linux
> distribution's package management system. I have proposed a
> possible structure for such a component as a Nooku Incubator proposal.
This the third time I have said this to you :-D We should hook up and
flesh out my appcasting RFC, dependency tracking and history tracking
(to facilitate rollbacks) are part of that.
Using appcasted plugins would also help solve some of our version
conflict dillemas, as all extensions could automagically download the
latest version of the required plugins at install time.
> 1. *The Library*. The core of what we are discussing.
> 2. *The Installer*. Because Joomla!'s own installer can't handle
> dependency tracking and roll-back.
> 3. *Adoption*. Just because we build it, it doesn't mean they will
> come. We will need big projects and clubs migrating to our
> solution and eventually having Joomla! itself adopt this solution.
> The former is difficult, but doable. The latter is less likely to
> happen than a snow storm in Sahara, pigs learning to fly or hell
> freezing over.
Regarding point 3, I agree getting 3pds on board is more likely than
the core, unless we can get one of the PLT to join us, but we can
always offer the tech back as a branch or patch.
Alternatively, some of the distros around would be likely to adopt
them.
You are right that just building it doesn't mean people will come,
however if we don't build it, then we are guaranteed that no one will
come. Besides which we have enough people here already to make a good
dent in the market. around 100 extensions and a few hundred templates
between us.