Blog Closed

This blog has moved to Github. This page will not be updated and is not open for comments. Please go to the new site for updated content.
Showing posts with label MediaWiki. Show all posts
Showing posts with label MediaWiki. Show all posts

Friday, June 25, 2010

EmbedVideo Version 1.0 Released

I'm pleased to announce the 1.0 release of the EmbedVideo extension for Mediawiki.

EmbedVideo is a highly capable and configurable extension for embedding flash video content from hosting sites such as YouTube. The extension is being developed on Github and is available for download from there as well. Information is also available on the extension page at mediawiki.org.

Major new features include:
  • Completely rewritten code base to follow current MediaWiki best practices
  • i18n internationalization support
  • Support for new hosting services
  • Backwards-compatibility support for EmbedVideoPlus
  • Thumbnailing, floating alignment, and attached descriptions
  • Support for custom embedding clauses
  • Support for per-service default width and width/height ratios
Contributions and patches, especially those that add support for new video hosting services, will be much appreciated.

Sunday, June 6, 2010

EmbedVideo Extension Pre-Release

Last Tuesday I got confirmation that I now had a commit bit to the MediaWiki subversion repository. I don't have access to the whole thing, I only needed access to the extensions section. Today I checked in a snapshot of the EmbedVideo extension I've been working on, in preparation for the first release of the extension under new management.

Since I started working on the extension I've made a number of changes, most of them internal. Here's a short list of things I've done:

  1. Broken the extension up into multiple files and created a proper directory structure, following current best practices
  2. Added i18n support, though I've only added English-language messages so far.
  3. Added support for the website teachertube.com.
  4. Added the ability to float the video left or right, and add a caption
  5. Added an {{#evp:}} tag, to be fully compatible with the EmbedVideoPlus extension syntax.
The biggest changes have been the internal cleanup tasks. The code base has been almost entirely rewritten from the ground-up to follow best practices, although there is still a little bit more cleanup work to do.

I'm planning a formal release of the extension to happen sometime within the next two or three weeks. I will be trying to test the release against a small handful of releases: Probably 1.12, 1.13, 1.14, 1.15, and the betas of 1.16. I'm not sure how I want to handle releases in the future, since I do plan to add new features and support for new sites, but I don't want to spend huge amounts of effort backporting every feature I add to all sorts of old MediaWiki versions. I will probably try to tag revisions for old versions, but will not worry about backporting new features myself. If somebody wants to do the hard work of backporting features, they can submit patches (or ask for a commit bit!) and do it themselves.

I'm not planning to add any major new features before I release in the next few weeks, so from here on out it's all testing and documenting. As soon as it's tested to my liking, I'll put out a new release.

Tuesday, May 11, 2010

EmbedVideo MediaWiki extension

I've been doing a little bit of contract work lately on a mediawiki-based learning system. One of the features that was requested of this site was the ability to embed flash videos, primarily from YouTube, but also from other kid- and school-friendly hosting sites such as TeacherTube.com and KidsTube.com. KidsTube has since announced that they will be going offline soon, so support for them isn't particularly important now, but the idea still stands.

I did a search on mediawiki.org to find a suitable embedding extension for flash videos. A few options pop up at the top of the results list, but I notice some strange similarities: EmbedVideo, EmbedVideo++, EmbedVideoPlus, all of which appear to be forks of the same original codebase. I also found at least two other independently-developed variants of the same extension in my searches.

The original EmbedVideo extension was developed by mediawiki hacker jimbojw some time ago, but he has completely stopped maintaining it. In his absence, the EmbedVideo++ extension was forked off his work to add some new features. However, that extension has since been abandoned as well. Add another fork from yet another developer--EmbedVideoPlus--which has already not been modified in over a year. I saw two other variants as well which are almost identical minus some small additions but which weren't listed in the released extensions list. Neither of these look to be actively developed, at least not towards a larger goal of a generally more-useful extension.

Where the story starts to get funny is that I had to make some of my own modifications to the extension, and was about two button clicks away from hosting my own version publicly when I had an insight: Why add another version, when I could try to take over maintainership of some (or all!) of the existing versions? Two of them are listed as "abandoned" on the mediawiki.org website. One other hasn't been modified in over a year. Two more are slightly more recent but by no means under active development. Each developer has done just enough work to get their own changes added, but stopped active development as soon as that was complete. I think I can do a little better than that. At the very least, I can put the project into some kind of public source control and make sure it gets exposure and some level of development sanity.

So, Sunday afternoon I sent out a handful of emails to the involved developers: I would like to take over the project, merge all the variants together into a single extension, throw it up on github, do some new development, and actively maintain it. I've only received a reply back from Jimbojw so far, but he seemed enthusiastic.

Yesterday I created a project on Github and uploaded some initial files. The original EmbedVideo.php file with some modest modifications, LICENSE, CREDITS, and README files, and some other related stuff. I've got a few big TODO items that I want to tackle in the coming weeks and months:
  1. Refactor the code to follow current best practices
  2. Test the code to work with newest development versions of MediaWiki. I've heard some reports that there are some incompatibilities.
  3. Add proper i18n support.
  4. Use, where possible, a dedicated javascript library for the purpose such as SWFObject.
  5. Add in some support for new video hosting websites
  6. Add in some other bits and pieces from the other extension forks, as possible.
I'm hoping to get some nice cleanup work started, and maybe get a few items ticked off this list soon so I can cut a new public release of the extension.

I'll post more news and updates as development progresses.

Sunday, April 11, 2010

MediaWiki PeerReview Extension

Yesterday I put the code public for the new PeerReview extension I've been developing. Actually, I've only been completing and putting the finishing touches on the extension after a friend and colleague, Jason, wrote up the initial versions.

The request was simple. We want a way for students in a class using MediaWiki to be able to take ownership of a page and be graded based on it's contents. There is a certain disconnect here with the whole open-content philosophy, but this is only for the narrowly-defined classroom setting where we have a central authority (teacher) and a group of editors with particular assignments. This kind of extension would obviously not be used in an open wiki like Wikibooks, but it could definitely find a happy home in a private wiki used for a class or closed group.

The PeerReview extension has several components. The first, and most obvious, is a review form that appears at the top of reviewable pages. When a user logs in and goes to a reviewable page, the review form appears and the user can enter a review. The review consists of a single grade (letter or number, as appears in the DB) and a short comment.



The next component is the idea of a page "owner". A new special page and some database extensions allow a person with sufficient authority (a teacher or administrator) to assign ownership of a page to a student or a group of students. In this way reviews left on a page can be associated with the students who have ownership of that page.



The third, and currently final component of the extension is a simple dashboard-like interface where a user can view lists of reviews that they have given and received.



The PeerReview extension is functionally, in the sense that everything that is visible is operational and tested. However, it is still a little bit slim on features right now, and there is a large amount of new development needed to really bring this to the next level of utility and usability. Specifically:
  1. A mechanism to associate students together into class groups, with one or more teachers
  2. An interface for teachers to monitor the reviews given to/from students in their class, including a utility to aggregate reviews into average scores for each student
  3. An improved API with more flexibility and more configurability
  4. Improved aesthetics throughout
I am continuing development on this as I am able, but I would definitely like to solicit feedback and maybe even find people interested in contributing to the project.

Monday, January 11, 2010

BookDesigner Under Development

I had been putting it off recently because it was "good enough" and I had other items on my todo list with higher precidence. However recently I've spent a few hours working on my MediaWiki Book Designer extension, and I'm starting to make some real progress with it.

As a bit of history, I started working on the designer when I was an active Wikibookian. It was born from my experience helping new users to get started writing books at Wikibooks, which ended up being unnecessarily complicated. The MediaWiki software is primarily developed and targeted for use with Wikipedia, not Wikibooks after all.

A graphical book outlining tool was one of the major deliverables requested from my contract with the Wittie group, and I was already mostly finished working on the first version of it on Wikibooks. As part of my work on the Wittie project, I slimmed the designer tool down to an easy-to-use subset of features, made a few improvements to the UI, and even wrote up a proper PHP backend to it that I didn't have access to do at Wikibooks.

Not too long ago I pushed my work to Github, where it sat without much fanfare.

Late last week I got a message on github from the first confirmed independent user of my extension. Also this week begins the spring semester and the Wittie group have been asking for a few improvements to the extension so they can begin creating new books for the new semester. These things together have spurred me on to begin a new round of hacking. Specifically I'm working on UI improvements, decreasing memory consumption, i18n compliance, and a series of other small fixes and feature additions.

I've also been spurred on to setup a proper testing environment on my personal laptop. Luckily this is quite easy in Ubuntu: install the mediawiki package, enable mediawiki in the Apache config file and restart Apache, setup the wiki, checkout the BookDesigner gadget into the extensions folder, and add a single require_once() directive in the wiki PHP code. Probably took me less than 5 minutes total.

It's too bad I'm not an active Wikibookian anymore, this tool would really be making my work there much easier. When it gets a little bit more mature I think it will be a real boon for wiki-based book writers. Still plenty of work to do before we reach that point, however.