Oxite Plugin Extensibility Points Discussion

Lately, I’ve been integrating some code built by another team at Microsoft, who will for now remain unidentified until they’re ready to make themselves known.  It’s a pretty cool plugins architecture that makes it super simple to build plugins.  It’s not fully baked yet so I’ve been filling in some pieces as I go, but the concepts are solid.  I’m still in the process of refactoring some things, but if you’d like to follow along at home, feel free to grab the latest checkin.  I make no promises that everything works perfectly and the UI for installing/uninstalling/editing plugins isn’t done yet.  You can actually run plugins with the latest code though.

Today, I got our team together to brainstorm about plugins in Oxite.  I thought it might be handy to talk about some of the plugins we’d like to build, as well as some of the more popular plugins that have already been built for other blog engines.  We came up with a nice little list of some initial extensibility points we could have in Oxite.  Since I like to be pretty transparent with what we’re doing with Oxite (follow @HumanCompiler to keep up on Oxite) I tweeted about it:

HumanCompiler Just sat down and laid out all the extensibility points Oxite will expose to plugin developers in the near future. Exciting!

Javier tweeted back pretty quickly:

jglozano @HumanCompiler sounds awesome! Would love to hear about it!

That’s a great idea, Javier!  Even better, I’ll share the list we’ve come up with so far AND get the community involved.  I’d like to get your feedback!  So here’s the list we have so far:

Events

These provide a way for plugins to be notified when something happens.  One might write a plugin so when a new comment is added to a blog post, it sends a txt msg to the post author (using the CommentAdded event).  Another example might be a plugin displays a “How to Use Your New Blog” page to a user who just signed up for a blog on your site (using the AreaAdded event).

  • AreaAdded
  • AreaEdited
  • AreaRemoved
  • PostAdded
  • PostEdited
  • PostRemoved
  • PostPublished
  • PostUnpublished
  • PostViewed
  • CommentAdded
  • CommentApproved
  • CommentRemoved
  • CommentSpamCheck
  • PageAdded
  • PageEdited
  • PageRemoved
  • PagePublished
  • PageUnpublished
  • TrackbackReceived
  • PingbackReceived
  • UserLoggedIn
  • UserLoggedOut
  • UserSearched

Processing Methods

I wasn’t sure what to call these actually.  WordPress calls them Filters, but that didn’t seem totally appropriate.  I’m open to names if you have any.  Basically, these are methods that plugins can hook into to do processing on an Oxite entity like a Post, Comment, User, etc.  One example might be a plugin that takes code blocks in all post bodies and properly formats them before being rendered by the view.  Maybe a plugin that applies a time of day mod to the currently selected skin.

  • ProcessPostInput
  • ProcessPostDisplay
  • ProcessCommentInput
  • ProcessCommentDisplay
  • ProcessNewTag
  • ProcessMarkup
  • SelectSkin

So what do you think?  Is this list a good start?  Are any of these completely pointless?  What others would you use in writing your own plugins?  Is the naming easy to understand?  What plugins would you develop if the sky was the limit?  Share your thoughts.  We’re listening.  🙂