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