When we set out to create Habari, one of the things I was adamant
about was a documented roadmap, so that users would know what was
coming. We've been pretty lax about maintaining such a document, but
you can get a glimpse of some of our development priorities by looking
at the individual release goals:
http://wiki.habariproject.org/en/Releases/
For example, here's what we want to accomplish for the next (0.5)
release of Habari:
http://wiki.habariproject.org/en/Releases/0.5/Roadmap
> However, plugins have one major drawback. They make a system brittle.
> For the stability and security of the system you use, you are not only
> dependent on the core system, but on all the plugins you use. That can
> lead to many problems. A concrete example is development and
> upgrading. Each time you upgrade the system, you have to hope the
> plugins keeps working. Or there's a bug introduced. You have to hope
> the development of those plugins is maintained. Often or sometimes,
> that's not the case.
> Or maybe the core of the system introduces some functionality that
> interacts/interferes with that from a plugin you use. Now what?
One of the nice things about Habari is that we use object oriented
programming. This allows us to expose a specific set of API methods
to plugins that are unlikely to change. We can change the internal
functioning of those API methods without breaking plugins in many
cases.
Be advised, however, that Habari is still very young in its
development cycle, so things are _expected_ to break now and again.
As Habari matures, and we get a better understanding of what is
expected / required by the core software, the frequency and degree of
breakage should diminish a lot.
So far, almost all of the plugins created for previous versions of
Habari continue to work. Newer versions of Habari introduce new
methods and ways to do things, but rarely prevent a previously working
plugin from executing correctly.
Cheers,
Scott
There is some debate as to the value of roadmaps. Some feel that they
arbitrarily lock us into development goals which might prove
unworkable, or unreachable in the specified time frame.
This is an issue that we're still discussing. Your participation in
the conversation is valuable, and can help us improve our process.
> I just want to know more about this, as it's quite an essential part
> of the whole development approach. Haven't read all threads back to
> the beginning, so don't know the reasoning behind the current
> philosophy. Maybe an idea would be to make a distinction between
> supported plugins and third-party plugins. Meaning that independent
> developers can develop plugins, but when these are good and important
> enough they get included as some sort of core extensions. The
> independent developers remains responsible for the development (and
> gets all credits!), but:
> - the plugin is tested by the core dev team as well, certainly when
> new releases of Habari come out. If the API works well this shouldn't
> take much time.
> - in case there's a plugin, and the original developer isn't working
> on the plugin anymore, the core dev team could take it's
> responsibility and do the work itself. Or makes sure someone does it.
Habari has some of this already, though it's not well documented, and
the long-term ramifications have yet to be ironed out.
Anyone can create and release a Habari plugin. Anyone doing so is
obviously responsible for keeping up with Habari development, to
ensure long-term compatibility.
We have in place a "Habari Extras" repository for community-supported
plugins and themes:
http://trac.habariproject.org/habari-extras/
These items are given by their authors to the community, and everyone
with commit access to the -extras repository can make changes to any
plugins or themes stored therein. This provides several useful
benefits:
* it increases the number of people willing and able to make
improvements to plugins and themes, reducing bitrot
* it allows bugs to be fixed faster, as folks in more timezones can
respond to issues
* it provides a casual, comfortable "proving grounds" from which the
core Habari committers can evaluate folks for inclusion into that core
group
Several plugins have already been identified as "core plugins", which
means they get shipped with Habari. These are maintained by the core
Habari committers. I expect the number of core plugins will increase
over time, but we currently have no formal guidelines for deciding
what plugins are or are not included.
Similarly, we don't have a formal guideline yet for how plugins and
themes get added to the -extras repository. Right now, it's pretty
relaxed and we allow folks access more often than not. Over time, we
hope to formalize this in some way.
> You guys are on the right track with Habari, and I'll help in any way
> I can. It's for this reason that I want to bring forward this issue.
Thanks! We're glad that you're willing to be involved. We look
forward to your participation!
Cheers,
Scott
By making existing API calls stay the same (accept same value and
return same value)... while continuing to add additional actions and
filters. Adding new calls does not mean old calls will be broken.