I've been working on some changes to mythweb lately, and wanted to run
them by you all. My goal is to add support for mythweb themes that use AJAX. (there's a good description of AJAX at http://en.wikipedia.org/wiki/AJAX if you're unfamiliar with it)

At least the recorded programs page already does this.

An AJAX theme has the potential to be much more responsive, since the amount of data that needs to be initially loaded is smaller and changes can be made to the database without refreshing the entire page. Many tasks in mythweb will be dramatically more fluid.

Agreed. I'd next like to get the scheduled recordings page set up for AJAX support, but there are some things that should happen first.. read on.

The downside of this is that it requires a fair amount of code restructuring. Currently, mythweb builds large data structures that it then passes to the theme for display. That's a slow process, especially when an AJAX request may use only a tiny portion of that data.

Yup. Except that passing "large" stuff by reference shouldn't be all that slow. I agree that it's a bad idea for a lot of stuff, though.

So instead, I propose that rather than using global variables, mythweb would instead provide functions that query and return specific pieces of data. Themes that need all the information at once can easily retrieve it, while themes that don't can avoid paying the overhead.

It needs both, actually.

I'd say I'm about half way through this process now. I've done a fair portion of the restructuring (though a lot of cleanup work remains) and I have several of the basic pages working in a new AJAX-based theme.

You didn't mention if you were working against SVN or .18.x -- there's a big difference between the two.

Here's why I haven't been accepting large mythweb patches recently (and why I haven't done much developing)..

 * Primarily, I've been working on my house and my yard (since it was
   summer)...
 * Lately, I'm suffering/recovering from a repetitive-stress type
   arm/shoulder injury and try to stay away from the computer as much as
   possible while at home.  Such is life, but I'd rather heal now than
   live with this for the rest of my life.
 * I'm working on a major rewrite of how my programs are architected
   (see https://svn.forevermore.net/cooktools/ for pieces).  Until I get
   this in place, I won't accept any core updates to mythweb, and
   anything you write against the current tree won't work once I make
   the updates.

There are a handful of things I *will* accept patches for:

 * Mythweb's "video" section (it sucks, I didn't write it, I want it to
   be rewritten or go away, but I don't use mythvideo so I'm not the one
   to rewrite it.
 * Mythweb's "music" section (same as above)
 * "search" type recording profiles (I should have put these in ages
   ago, but still haven't found the time to do so)

For your info, on my rewrite, I plan to segregate the current "themes" into "themes" and "skins"... There will be two themes: full and minimal (with vxml, wml, etc. as well, but not part of the usual choices). Full will have full ajax/javascript support (again, usable without, but severely limited), and minimal will bring back the ideas previously used in the "compact" theme. Everything will be driven via css, so it will allow mythweb to be skinnable to fit your preferred color schemes, etc.

The current theme API will be completely rewritten to get rid of the crappy object-based way I originally came up with, and will be replaced with a much better one that's taking form in my cooktools project.

Portions of mythweb are getting relicensed or dual-licensed as LGPL so that I can share code with work (eg. includes/db.php and all javascript code) -- meaning Silicon Mechanics employees (we'll be 3 coders in a couple of weeks) will officially contribute at least small portions of code to MythWeb, but the only way I can do this is if the code is licensed in such a way that the company can benefit, too. My reading of the GPL, especially version 3, won't allow this, and if I accept many changes to files that are currently 100% my work (I can provice an exclusive license for any of my code), it will move into a legal grey area that I don't want to deal with.

Coinciding with a move to using phpdoc at work, I also plan to do the same for my personal php projects, including mythweb. So expect to see phpdoc comments getting added in, expecially descriptive stuff for each file (like the license type). Dunno if I'll get a phpdoc site set up for mythweb, but at least the code will be well documented.

*If* someone wants to help with this major rewrite, I'm open to help, but as I'm not entirely finished with the design ideas yet, there will be a lot of conversation needed. Contact me on irc if you want to talk about it.

-Chris
_______________________________________________
mythtv-dev mailing list
[email protected]
http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-dev

Reply via email to