User:michaeltwofish
From Habari Project
Feel free to ping me about any of this stuff on #habari.
Releasing 0.7
- Current status of merge trunk to makaanga: next merge r4276 to ??
- Continue to work on defect tickets left in 0.7 (some may be deferred) [1].
- Improve Release 0.7 notes.
- Follow the Release Checklist.
Tasks that can happen after release
- Ensure all -extras themes have a FormUI comment form.
- Themes in -extras have appropriate areas added.
- Plugins provide blocks as appropriate.
Documentation
- Improving documentation
- Some drafts of pages wiki structure (may be outdated)
Important wiki pages that need to be integrated:
Pages I've asked people to work on:
- Core:Benchmarking - BigJibby, throw some stuff in about benchmarking with xdebug
- Caching - BigJibby, this is a user page, and there probably should be dev and core pages too, but anything that's dumped here would be good.
Wanted Pages
- Core:Testing
- Core:Benchmarking
- Caching
- Dev:Working with URLs - rewrite rule stuff. Dev:Adding Rewrite Rules should redirect there.
- Backing up your Database
- Core:Changing API and Database Versions - instructions for changing API and database version numbers, and guidelines on when they should be changed.
- Core:Adding Support for an RDBMS - what needs to be done to support a new RDBMS.
- Dev:Adding Metadata to Posts - describe PostInfo and give examples.
- Dev:Running Periodic Tasks - using the cron classes.
- Dev:Logging Events - using the log classes.
- Dev:Working with Session Data
- Managing Spam
- Displaying Code in a Post
- Dev:Translating Themes and Plugins - would we need a Translating Themes and Plugins, a page for users?
- Core:Character Encodings - anything to do with character encodings, how we store stuff in the database, what extensions we're using, things that might go wrong. Not that I have any idea about any of this stuff, but I know I don't know, that's why I want the page.
- Displaying Posts Based on Content Type - The way that this has to be done now needs coding that is probably beyond most users. It should be dead simple.
- Dev:Adding a New Post Content Type to the Atom Feed - now that you've added a content type, how do you add it to the atom feed?
- Dev:Manipulating the Atom Feed - for example, how to add an icon element. Should link to Dev:Adding a New Post Content Type to the Atom Feed.
- Dev:Writing an Importer
A bunch of pages analogous to Dev:Retrieving Posts:
- Dev:Retrieving Tags
- Dev:Retrieving Comments
- Dev:Retrieving Users
- Dev:Retrieving Groups
- Dev:Retrieving Tags
Quality Assurance
- Unit Testing
- Continuous integration (Phing, Cruise Control, phpUnderControl, Capistrano, Xinc, Bamboo($$))
- Number of operations, http://pecl.php.net/package/vld
- Benchmarking
15:19 < rick_c> turn on db profiling 15:20 < rick_c> or xdebug's profiling 15:20 < BigJibby> and your query logs 15:20 < BigJibby> in mysql 15:20 < BigJibby> it will give you times 15:20 < BigJibby> then write a script to parse, and average
- Testing plugins. There should be a way to easily add and run tests for plugins.
Possible Tests
Crash reporter
Error class to phone home with a stack.
Code Changes
Refactoring the Installer
The installer has to know too much about supported databases and servers. See #1022.
Some very draft code ideas are at User:michaeltwofish/installer_refactor.
API Improvements
- Posts::count_all() is poorly named, as it actually counts posts retrieved by the last call to Posts::get() that didn't return a single Post. Rename to Posts::count_retrieved()? Other suggestions?
- Controller, Site, URL feel mixed together. Maybe refactor some into oblivion, moving functions into ActionHandler, RewriteRules.
Comments as a content type
Atom and AtomPub
- Creating a complete and warning-free implementation
- Support media through silos
- Theme output for Atom and AtomPub
Implementation notes
- We save categories as tags. I'm not sure that we should blindly do this. What if the user has a categories plugin?
- We should return a suitable header when trying to PUT to a non-existent post.
Habari File Manager
- Access interface through Manage -> Files
- Drag and drop file movement
- Click to rename
- Click to edit metadata
- Multiple file uploads
- Upload zip files
- Preferably manage media from all silos, not just the Habari Silo.
Plugin states
Ideas for plugin states.
- active
- As now.
- hold
- All active plugins can be moved en masse to be on hold. Plugins won't run, but their data is intact. They can be bulk moved back to active. This is useful for upgrading or seeing if a particular behaviour is caused by a plugin or core.
- deactivate
- The plugin won't run, but its data is not touched.
- clean
- Remove all the plugin's data. Data can be registered so that the user can clean them, even if the plugin's directory has been deleted. See #346.
Here's some discussion on IRC. People don't like 'hold' or 'clean'. 'snapshot' was suggested to replace 'hold', which is probably better. 'uninstall' was suggested for 'clean' but then people think we're deleting the plugin directories as well.
Rules plugin
A plugin that allows administrators (via ACL token) to define chainable rules with associated actions. It would be most interesting when combined with other plugins. This would be useful as the basis for all notification type plugins, such as if post X has a comment send an XMPP notification to user Y. It would also be useful for defining workflows, such as if Y saves a post, an email should be sent to Z, who can publish it.
Need to find possible triggers and possible actions. Triggers are calls to Plugins::{act,filter} (how can these be found?). Actions can be found by reflecting classes that descend from Pluggable.
Search
- Should be entirely replaceable
- Index IsContent ?
- Use index for related posts, tag suggestions
WYSIWYG editors
A tour plugin
- To be used where a site is built for a client
- Outline capabilities based on the logged-in user's permissions
Offline support
- Google Gears
- HTML5 offline
Google Wave
- Offer posts and comments as waves
Correct My Typos plugin
- Allow readers to highlight spelling and grammar errors on a post and write corrections.
- Readers who submit corrections would see the corrections (store that they should in a cookie)
- The admin and/or author would get a comment (a new 'correction' comment type?).
- The correction could be rejected (and deleted) or accepted.
- An accepted correction would patch a post.
- Those who submitted the correction could configurably be notified.
RandomGetter plugin
I'm not sure how this might work, but a plugin that provides an interface for getting random objects. An example would be $theme->get_random('image'). The idea is that you could drop in an implementation that returns a random thing, a quote from a database, a random post, whatever.
So, maybe, an interface RandomGetter and you could drop getters, which is just a class that implements RandomGetter, into a getters directory.
Admin niggles
- Tabular data should be in tables (manage pages).
- Drop buttons hide actions. The button says 'Edit' and hides 'View' and 'Delete'. The button the user can see should reflect everything in the drop down. In this case, it should say 'Actions'.
- Sub menus. See [2]. The user should have the option of using sub menus, but they should default to expanded. Better still, the whole menu should be configurable by the user, with its own vocabulary. Currently adding menu items is less than easy to do anywhere but at the bottom. Slicing (as per the wiki) doesn't look right.
- The use of colour to denote status on the manage comments page is ugly. We should just write what the status is. The drop buttons are also particulary ugly here as they're very wide.
- The tags page needs serious thought. Who uses it, and how? Is there a better way to manage your tags?
- The themes page should be redesigned, as being discussed here [3].
- It's likely the HTML and CSS should be cleaned up.
- Progressive enhancement is likely to help with said cleanup, and probably simplify the Javascript.
- More layout elements/classes should be available to plugin authors for making admin interfaces/pages.
Miscellaneous
- Form mailer
- OpenID
- Taxonomy
- XMPP integration, notification
- OMB support
- Automatically create a FormUI CRUD form from QueryRecord classes.
- Comments as content types, with a comment type taxonomy that plugins can add to (site, pingback, wavelet, whatever).
- Dashboard modules as blocks/areas.
Ziada Project
An unofficial community repository for Habari
For themes and plugins that can be licensed with the Apache Software License, there's the Habari Extras repository.
Some things don't belong in there, but we'd still like to collaborate on them. That's what this project is for.
