Funded! This project was successfully funded on June 3, 2012.

Update #36

Progress: Lib-Ray Player


Progress for this week on the Lib-Ray Player software:

  • Continued writing doctest unit tests in
  • Session, Volume, Archive tests passing
  • Volume now recognizes and reads test volume, with necessary paths and metadata for playback
  • Archive can copy or delete volumes from player's on-disk Lib-Ray volume archive
  • Added with a starter set of labels in the 12 "language system" languages (English, French, Portuguese, Spanish, Russian, German, Arabic, Swahili, Chinese, Japanese, Hindi, and Indonesian/Malay). This is needed to test Menu, Server, and Browser objects.

No doubt I've made translation errors (I used a combination of VLC's po files and Google Translate to try to figure out the correct context-specific words for the function labels that Lib-Ray needs, but obviously I don't speak all of these languages). The real system will need to have a .pot/.po import/export script so that the formats are gettext-compatible, since that's what most open-source translators are used to. But I wanted a starting set for testing, and a fallback to begin with.

I will have to make a decision this week about how to do the actual language label substitution. I was considering trying to use SimpleTAL for this, but the downside is that it would restrict the syntax used in the actual menu HTML files, and I'm not sure the TAL format is appropriate in the Lib-Ray standard.

I'm currently favoring using the Python html5lib module to parse an "ElementTree" from the HTML and re-write it that way. Another approach is to inject Javascript to make the changes (note, this Javascript would be part of the player, not the Volume -- it doesn't violate the declarative/no-code-on-disk paradigm).

The nice thing about either of these approaches (as opposed to TAL) is that they don't constrain the syntax in the actual menu HTML -- so I can just choose that to maximize clarity. I need to check namespace issues, but something like "label=" or "lr:label=" is likely how it will look.

The downside is that they are more manual and require a bit more than a simple template library call (I will have to create a tree iterator and do text-substitution in the ElementTree object, then regenerate text to be served by the Server object). It may actually be faster than a SimpleTAL call, though, because ElementTree is more widely used and has been optimized more.

This next week should see me adding the localization and finishing up

After that is integration with the existing Player/Browser/Server/Cinema object system that encapsulates the technical interfaces to the WebKit and VLC libraries (these were tested earlier with hard-coded links to the volume -- now the paths will be found by making calls into the model objects, which allows for loading and switching volumes, etc).

At that point, the player should work on PCs with keyboard or mouse input, and the focus will shift to input methods and compatibility with IR remote controls.

Update #35

Update for 2014



This is Rosalyn Hunter, co-producer of the Lib-Ray project with an update.

This last December, the Lib-Ray facility suffered a fire that damaged some equipment and set back our production. Luckily, our prototype machine and our main computer was salvageable. We are in the process of reassessing our assets and backing up data. We will update soon .

The Lib-Ray project is NOT dead. Unfortunately, we have not proceeded at the optimistic rate that we first expected, but we hope that you will bear with us. The climate for free media production and distribution has gotten no better since we introduced this project. The news that the MPAA has joined the W3C and introduced DRM into HTML5 was not welcome, and we need Lib-Ray more than ever. Please believe that we have not given up on an internet where producers of content can distribute their work without restriction. We are continuing to believe in that dream.

I wish to thank all of you for your support and your patience. We will be posting more frequent updates, and I will try to reply to your requests as soon as I can.

Thank You.

Rosalyn Hunter

Some technical progress notes from Terry Hancock:

  • There is a branch called "otonashi" on the Google Code server which is what I am currently working against.
  • After many attempts, putting the "test fixtures" into Subversion was a lost cause. Subversion (or Apache or my Browser or whatever) doesn't like the large file sizes. This is a problem we had on "Lunatics!" as well, and since I operate the SVN repo for that project, I did some tests there as well. I think I finally know what I'm doing with it.
  • In the end, I decided to simply provide the fixtures as a downloadable package (there's little to no code in it anyway).
  • Google Code discontinued the package download option for projects this month.
  • Long story short: I'm now hosting the fixture package on our own server (see Lib-Ray Software page). Keep this software page rather than the deep link in case we change where the files are hosted. The software package releases will be here as well when they are ready.
  • With this package finished, I have started writing unit tests for the "model" module, which contains the abstract object model (or object database if you like) for the player.
  • Although the test package won't be much use until I've checked in these tests, you might enjoy the 1-minute "Free Culture Sampler" video it contains. We need about a minute to test the quality-testing parts of the wizard software.
  • The technical modules have been tested and working for some time now, but aren't very interesting because all of the paths are hard-coded for testing only.
  • After "" passes unit tests, all the hard-coded paths will be converted to model calls to get the correct information.
  • The first released version probably will not auto-mount Lib-Ray partitions, but have to be told the location of a mounted partition.
  • Of course, that will be fixed in later releases (code will be added to scan the USB bus for new devices, mount UDF filesystem devices, and then check to see if they are indeed Lib-Ray volumes by looking at the contents).

Update #34

Happy Halloween (and stuff...)

1 comment
1 like

It's well past time for another update, and of course, the project is well into overtime at this point. I comfort myself that, of the 31 Kickstarters I've backed myself, most are running this late or later, but truthfully I'm still pretty bugged by it. I have made a little progress, though, and I hope things are getting enough less crazy for me personally so that I can make some major steps forward soon.

There are several comments and messages I haven't read yet -- I will go through those and try to respond to any that aren't covered here.

I have been focusing my effort on the player software, although I did do a little bit of work on design issues relating to localization.


It became clear that there were some major problems with the code I was developing before, and I decided to start over, importing the bits I needed. Unfortunately, my Subversion skills are limited, so I did this on-disk, and I haven't published it yet. After I get back from taking the kids trick-or-treating, I'm going to see if I can't create the new branch in the SVN and bring it up to date. This may take me a little time, but it should be up tomorrow or so.

At this point, I have gotten past the main technical obstacle of manipulating both the HTML menus and the VLC-based video playback and getting them to switch back and forth. In other words, I can successfully playback the menu of my test Lib-Ray image and return to menu after playback. All of this is currently under keyboard-controls. Implementing controls through the keyboard is the logical first step, because it's simple and works on general-purpose computers, and because many infrared remotes work by emulating keyboards (some others work through a different protocol which will be added on later).

LibVLC effortlessly solves the problems associated with MKV, VP8, FLAC/OGG, and ASSA integration, so I can't exactly take credit for the fact that video playback with subtitles works exactly as it should -- but it does do that. I did set up the control methods to switch subtitles and so on.

The test fixture I'm using is a very small Lib-Ray image with the "Big Buck Bunny Loves CC" clip produced for It's By-SA licensed, so I can distribute it. It is awkwardly large (much larger than the player code), as any video file long enough to be a useful test is bound to be, so I've decided to create a separate "Lib-Ray test fixture" download / directory so it doesn't bloat up the source tree.

The documentation for LibVLC and the Python module "vlc" is pretty straightforward. Working with Webkit is a little more frustrating -- pywebkitgtk is not nearly so well-documented. However, there are examples to work from around the web, and I've been studying those for help.

The current Webkit challenge is just to hook up to the navigation policy callback correctly. Lib-Ray is not supposed to allow direct-linking off of the disk without an explicit OK from the user, and we need a policy control in our embedded browser to make sure that's how things work.

The other aspect under development is a correct object-model for the Lib-Ray environment itself. The test code works with the test-fixture, but still has lots of hard-coded paths and URLs and they aren't very consistent. All of this will need to be replaced with calls to the '' module, which will correctly translate URL and path references to the player menu area, volumes archive, and the currently-mounted Lib-Ray volume. This is what I've been working on in the last week.

Menu Localization

One piece of the standard I was not entirely sure about was how exactly to do menu localization. HTTP provides a way to serve entire web-pages based on the language of the requesting browser, but that would be a very clumsy solution for Lib-Ray. What we mostly want is something that just substitutes button names and can provide alternate labeling.

I may wind up with a bit of a hybrid solution on this, but the method that seems nicest is to simply label buttons using a limited vocabulary. We'd need something like this:

<a href="?play=1" id="PLAY">Play</a>

The 'href' target is the part that is understood by the player software (this is actually a relative URL with an HTTP GET variable). The text inside the tag is the default value -- what would appear on screen in a regular browser, and what the Lib-Ray menu browser will show when translation is turned off. But when translation is being used, the browser would read the 'id' attribute, look that up in a table, and provide the correct word in the user's preferred language.

This could obviously be done in the browser with Javascript, or it can be done on the server side with an HTML DOM in Python. After waffling a bit, I think the best option on my reference implementation is going to be to do it on the server side, using the Python html5lib module, but I haven't tested it yet. In any case, other players could implement this on the browser-side if the developer prefers.

Still Pluggin'

I'm still working through a lot of details in the code, and it's very hard to say exactly when it's going to be "ready". I expect to be writing some more updates in the next few days as I upload and/or check-in more of the work.  There are also some other issues I need to address -- such as sending out the questionnaires for reward fulfillment and so on. At this point, I'm not sure just how long all this is going to take, so I'm not going to make any rash promises about that just yet.

I had posted earlier about the possibility of bringing someone else in on the project to help with the programming. It was a nice idea, but it didn't quite pan out. So I'm still working on this myself. On the other hand, I got through the roadblocks I was looking for help on. The present problems are quite a bit smaller -- I have good references on the navigation policy stuff.

Finally... it's Halloween today. So here's a Jack O'Lantern made from an old CD-ROM to brighten your day (probably would've been more appropriate if it were a 'obsoleted' Blu-Ray or something, but it's really just a CD-ROM)...

Happy Halloween!
Happy Halloween!

Update #33 - For backers only

Busy couple of weeks...

1 comment

For backers only. If you're a backer of this project, please log in to read this post.

Update #32

Template System (Lib-Ray Wizard)


Lib-Ray Template System

The Lib-Ray authoring wizard will include generation of menus from theme templates. I've been working the last couple of days on the internal side of this. The following is of interest to people considering writing their own themes. I plan to include at least two themes with the release (at minimum there will be themes based on the layout for the Blender and Sita releases).

So, if this is too technical, do not fear -- you won't need to know this just to use the Wizard to create a Lib-Ray volume, this is internal stuff.

Happily, I found that my old friend "SimpleTAL" is still readily available. This, combined with the "zipfile" and "ConfigParser" modules from the Python standard library covers everything we need for creating templates.

So template files will be ZIP files with SimpleTAL page templates and some control data, like this:

(Not shown: the template will typically contain additional static resources like image files or fonts. I also have not gotten into the full-blown internationalization system that I described earlier. For now, we just have a "setup" page as on a DVD. This will get expanded).

The template files will be expanded into a Lib-Ray structure based on user input and the configuration file included with the template. For example, the program will negotiate the number of chapters that appear on each chapter page and how they are laid out. The logic available in TAL templates is sufficient to handle this kind of layout problem, so the template can set upper and lower limits on this parameter and allow the user to choose.

As a result, the Lib-Ray volume image generated from the template will look something like this:

This also shows the internal object names for the page templates inside the Wizard script.

This layout includes all of the Lib-Ray specific HTML requirements, with stubs provided for the special feature hooks (volume special features, title special features, and "extras" -- where the "extras" are eqiuvalent to "DVD-ROM" content and do not have to conform to the security limitations on Lib-Ray menus, such as no external links or scripting). Once you get into authoring special features pages, you're designing HTML, and it will be more sensible to use existing HTML design tools for that (including a plain text editor).

One special case that's worth considering is the "title_in_index" option. For volumes with a single video title, it's kind of inconvenient to make the user hop through two menus, so we provide an option to condense the "title page" onto the volume "index page", like so:

(I haven't quite decided whether to only provide this option for template designers, or to require templates to allow for either case).

Lib-Ray Title Generation (Testing)

The code to generate Lib-Ray title video conversion scripts appears to work fine. I need to do some more to have it work from PNG streams correctly, and I need to do some testing on the audio and subtitle stream generators. The script actually writes a conversion script and then runs that, which allows for a lot of flexibility. I also need to actually have the script launch this new script into a background process, as it may potentially need to run for hours (vpxenc, in particular, tends to need quite awhile to work).

I'm not quite following the proper "test driven development" process, which dissatisfies me a little. I really should be creating unit tests and coding to meet them.

As it is, though, I have some doctests which work and some which don't, because they are interactive. I'll either have to drop the interactive ones out of the testing system or come up with some clever way to run the tests on them. I'm leaning towards just leaving them out and testing the interactive stuff manually, at least until I think of something clever.

"And that's the news from Lake Wobegon..." -- I'll be back with more later. :-)

  • Image-250184-full
  • Image-250185-full
  • Image-250186-full

pledged of $19,000 goal
seconds to go
  • Pledge $1 or more
    You selected

    76 backers

    Notification of download availability for the software and specification documents.

    Estimated delivery:
  • Pledge $10 or more
    You selected

    133 backers

    BACKER CREDIT: In addition to receiving notification of the download, anyone contributing $10 or more will be credited in the distribution notes for the software.

    Estimated delivery:
  • Pledge $25 or more
    You selected

    35 backers

    COPY OF THE SOFTWARE: CD-R disk with all of the developed software in a Live-CD Linux so you can play Lib-Ray on most computers with CD-ROM and SD card support. The "Complete Guide to Lib-Ray" book will be provided in PDF format on the disk.

    Estimated delivery:
  • Pledge $30 or more
    You selected

    55 backers

    BLENDER FOUNDATION OPEN MOVIE COLLECTION. Lib-Ray edition of the first three open movies created by the Blender Foundation: "Elephants Dream", "Big Buck Bunny", and "Sintel". You get all three films in high-quality 1920x1080 HD video with stereo and 5.1 surround sound, plus as many subtitle tracks as I can locate. This release will be in a compact, lightweight sleeve.

    Estimated delivery:
  • Pledge $35 or more
    You selected

    12 backers

    SITA SINGS THE BLUES. Lib-Ray edition of Nina Paley's award-winning feature-length animated film "Sita Sings the Blues" in beautiful 1920x1080 HD video with stereo sound. Some of the proceeds from this Creator Endorsed release will be shared directly with Nina Paley after we make our minimum. This edition will be in a light-weight, compact, eco-friendly sleeve.

    Estimated delivery:
  • Pledge $40 or more
    You selected

    25 backers

    BLENDER FOUNDATION OPEN MOVIE COLLECTION (Lib-Ray): Deluxe-packaged Lib-Ray format release of the first three of the Blender Foundation's Open Movies: "Elephants Dream", "Big Buck Bunny", and "Sintel", with extras and subtitles in all of the available languages I can find. The Lib-Ray software and documentation will be provided as an extra on this special edition card. (This is the same package as the mock-up I showed in the video).

    Estimated delivery:
  • Pledge $50 or more
    You selected

    9 backers

    SITA SINGS THE BLUES (Lib-Ray): Deluxe packaged Creator-Endorsed Lib-Ray format release of "Sita Sings the Blues" by Nina Paley. Note that this will be the first time this title has been released in a high-definition format. The Lib-Ray software and documentation will be provided as an extra on this special edition card. (This is the same package as the mock-up I showed in the video). After we make our minimum, a portion of the profit from sales of this card will be given to Nina Paley herself.

    Estimated delivery:
  • Pledge $50 or more
    You selected

    6 backers

    PRINTED MANUAL: A printed copy of the "Complete Guide to Lib-Ray", a book documenting the specification, tutorials on how to create a Lib-Ray disk "from scratch" as well as by using the developed Lib-Ray mastering wizard software. Plus you will receive the software on disk as well.

    Estimated delivery:
  • Pledge $60 or more
    You selected

    54 backers

    BOTH RELEASES (SITA SINGS THE BLUES and the BLENDER OPEN MOVIE COLLECTION) on Lib-Ray: Both "Sita Sings the Blues" and the Blender Foundtion open movies "Elephants Dream", "Big Buck Bunny", and "Sintel". The Lib-Ray software and documentation will be included on these cards.

    Estimated delivery:
  • Pledge $80 or more
    You selected

    3 backers

    PRINTED MANUAL and SITA SINGS THE BLUES: "The Complete Guide to Lib-Ray" printed book along with the Lib-Ray format copy of "Sita Sings the Blues" in the compact package.

    Estimated delivery:
  • Pledge $85 or more
    You selected

    21 backers

    BOTH RELEASES - DELUXE PACKAGE OPTION ("Sita Sings the Blues" and "Blender Open Movies Collection"). If you would like to get both of the Lib-Ray releases in the deluxe (metal package with 3D-printed plastic card clip and printed insert with liner notes), you can select this option. These will be similar to the mock-ups in the video.

    Estimated delivery:
  • Pledge $100 or more
    You selected

    3 backers

    TRY OUT LIB-RAY 4K: Experimental "Lib-Ray 4K" release of the Blender Foundation's "Sintel" Open Movie. This will be in an experimental 4096x2048 pixel format as currently used in digital projection systems. There are only a few home theater systems available at this resolution, and you will need to run the software on a fairly high-end computer to make this work (the hardware player I am offering is not guaranteed to be able to play this disk).

    Estimated delivery:
  • Pledge $120 or more
    You selected

    5 backers

    PRINTED MANUAL and BOTH RELEASES: The "Complete Guide to Lib-Ray" printed book along with Lib-Ray format copies of "Sita Sings the Blues" and the Blender Foundation Open Movie Collection.

    Estimated delivery:
  • Pledge $200 or more
    You selected

    7 backers

    GOLD SPONSOR: You will receive the printed "Complete Guide to Lib-Ray" book, both Lib-Ray releases ("Sita Sings the Blues" and the Blender Open Movie Collection), and you will be credited as a "Gold Sponsor" in the documentation, book, and distribution credits.

    Estimated delivery:
  • Pledge $600 or more
    You selected

    0 backers Limited (100 left of 100)

    PLATINUM SPONSOR: Be listed as a "Platinum Sponsor". Also get your choice of compact or deluxe editions of both "Blender Open Movie Collection" and "Sita Sings the Blues" and the printed manual "Complete Guide to Lib-Ray", with a signed message of thanks from me (all the "PLATINUM" level sponsors will get this -- because I'm really going to be that grateful!).

    Estimated delivery:
  • Pledge $750 or more
    You selected

    0 backers Limited (10 left of 10)

    FILMMAKER (MASTERING OF YOUR OWN FILM): Special reward for producers -- I will work with you to produce a Lib-Ray edition of your own film. You will need to provide lossless (or best available) original video, original audio, still images for menus (unless you want me to use frames from your video) and any other extras you want to have on the release. It does NOT have to be a free-licensed release, but I will need to get a statement identifying you as the copyright holder and indemnifying me against claims (I'll provide boilerplate for that). The video content also should not violate any laws or require any special regulatory notices (e.g. no porn films, please).

    Estimated delivery:
  • Pledge $1,000 or more
    You selected

    1 backer Limited (19 left of 20)

    PLATINUM SPONSOR / HTPC SYSTEM (PLAYER/COMPUTER): I will build you a Home Theater PC with playback support for Lib-Ray, DVD, and (some?) Blu-Ray disks. The system will be GNU/Linux based and will use one of the existing player distributions for DVD and Blu-Ray playback. Lib-Ray playback will be through the software I develop and will be integrated into the distribution as best I can make it. This player will come in a low-profile HTPC case. The system will be powerful enough to do the decoding in software, so you'll also be able to find other uses for it, such as playing games. You will also receive the "Sita Sings the Blues" and Blender Foundation Open Movie Collection releases and the printed "Complete Guide to Lib-Ray" book, and you will be credited as a "Platinum Sponsor".

    Estimated delivery:
  • Pledge $3,000 or more
    You selected

    0 backers Limited (20 left of 20)

    PLATINUM SPONSOR / HTPC SYSTEM PLUS MONITOR AND SOUND SYSTEM: I will build you a complete Home Theater (or private screening) system with the player HTPC, a set of 5.1 surround sound speakers, and a 32" flat-panel LCD 1080P HD TV monitor. You will also receive credit as "Platinum Sponsor" and you will get copies of both "Sita Sings the Blues" and the Blender Foundation Open Movie Collection as well as the printed "Complete Guide to Lib-Ray" book. (Warning: if there are customs regulations or tariffs affecting the import of this product to your country, you will need to be responsible for them. Monitor and speakers may be drop-shipped separately from the supplier to reduce shipping costs).

    Estimated delivery:
  • Pledge $5,000 or more
    You selected

    1 backer Limited (2 left of 3)

    CORPORATE SPONSOR: Organizational logo sponsor. Your company's logo will be included prominently in all of the project materials and on the website as a project sponsor. You will also receive up to 10 copies each of the two Lib-Ray releases ("Sita Sings the Blues" and the Blender Foundation Open Movies Collection).

    Estimated delivery:
Funding period

- (30 days)