Difference between revisions of "Dmmdb Braindump"

From Giss
(About javascrip)
(Refactoring)
 
(8 intermediate revisions by the same user not shown)
Line 10: Line 10:
 
Support for 16:9 and HD is a good thing as it is a default feature nowadays in any cheapo camera, phone devices.
 
Support for 16:9 and HD is a good thing as it is a default feature nowadays in any cheapo camera, phone devices.
  
=== Audio Data Rates ===
+
=== Average Audio Data Rates ===
* LD:
+
* LD: 64kb ?
* SD:
+
* SD: 128kb ?
* HD:
+
* HD: 320kb ?
  
=== Video Data Rates ===
+
=== Average Video Data Rates ===
* LD:
+
* LD: 500kb ?
* SD:
+
* SD: 2000kb ?
* HD:
+
* HD: 5000kb ?
 +
 
 +
=== Codecs and encapsulers ===
 +
* ogg/vorbis-theora
 +
* WebM/VP8 ?
 +
 
 +
=== Original Material ===
 +
On the server side config there could be an option that would enable or disable the keeping of the original files. If kept they shold be organized by channels (ie, in a folder with the channel name...)
  
 
== Interface ==
 
== Interface ==
Line 35: Line 42:
 
* default is HTML5 <video> tag
 
* default is HTML5 <video> tag
 
* fall-back is a GPL flash player (flow player is the most advanced but their GPL license is funny)
 
* fall-back is a GPL flash player (flow player is the most advanced but their GPL license is funny)
 +
 +
'''Radical Idea:''' My personal view would be to outsource the issue entirely to a project such as videojs.com so that someone else can take care of all the heavy lifting and compatibility nightmare.
 +
 +
== Interoperability ==
 +
 +
=== API ===
 +
It would be nice to have a documentation of the API as it would encourage the contribution of client side tools/helpers and plugins. For example a CLI to upload and annotate the material.
 +
 +
=== Share ===
 +
==== Wordpress ====
 +
As far as I understand wordpress' editor for standalone installations disables any potentially risky tags in a post, making the <iframe></iframe> trick useless. To counter this it is required to make a special hack to embed GISS TV using short codes and functions.php in a theme (more on this soon).
 +
 +
Ideally the support should be provided by a plugin using the video upload interface of Wordpress (used for, a.o, Vimeo) or provide a GISS.tv shortcode plugin (used for, a.o, Vimeo) that does not involved hacking one's theme. It should not be too difficult to go from the functions.php shortcode hack to full plugin.
 +
 +
==== What do you embed ====
 +
Behind the wordpress issue, there is a confusion, or at least some doubts:
 +
* It is easy to create such a plugin and embedding could even be simplified by just inserting a <video> tag in the post and some underlying text that points to the GISS channel, but is something else needed?
 +
* What about other CMS and blog engines? Do they also suffer from the forbidden direct usage of <iframe> and <object>?
 +
* What about the FLash player fallback? This should be handled by a js included in the embedded code?
 +
* How do the others do?
  
 
== Development & Community ==
 
== Development & Community ==
=== Code ===
+
=== Workflow ===
 
 
=== Development ===
 
 
Using a DVCS would bring more visibility and simplify the process of contributing/deploying code. There are many options out there, from the popular git to mercurial or the more exotic darcs. By using DVCS, contributors can silently fork the project and commit locally to test different features and keep track of their development, once mature and accepted they can be pushed (repos to repos or as patches) to the official repos. Silent forkers can also keep in sync with the official repos while testing their changes. A central repos (such as gitorious) can be used as backup for official repos or hub if the workflow is classic (central repository).
 
Using a DVCS would bring more visibility and simplify the process of contributing/deploying code. There are many options out there, from the popular git to mercurial or the more exotic darcs. By using DVCS, contributors can silently fork the project and commit locally to test different features and keep track of their development, once mature and accepted they can be pushed (repos to repos or as patches) to the official repos. Silent forkers can also keep in sync with the official repos while testing their changes. A central repos (such as gitorious) can be used as backup for official repos or hub if the workflow is classic (central repository).
  
Line 47: Line 72:
 
* webkist's inspector audit: nearly 100 of warning and problem on page's resources
 
* webkist's inspector audit: nearly 100 of warning and problem on page's resources
  
==== About javascript ====
+
For a future release, I would argue it might be easier to start from scratch if the client side of the project is not much entangled in the PHP code. Using Javascript to do all the interactions and calls to a PHP powered API.
* To simplify everything, each page should use XHTML and be kept as minimal as possible using as many js files as needed, so they can be tested independently and simplify maintenance and contrib.
+
 
 +
==== Javascript ====
 +
* To simplify everything, each page should use XHTML and be kept as minimal as possible using as many js files as needed, so they can be tested independently and simplify maintenance and contrib. In-lining CSS or JS should be done if nothing else is possible.
 
* Jquery should be the only lib used and should be used as much as possible for all the heavy lifting for UI and AJAX stuff.
 
* Jquery should be the only lib used and should be used as much as possible for all the heavy lifting for UI and AJAX stuff.
 
* Variable should be kept enclosed in functions whenever possible to avoid bad surprises when several channels are openned at once.
 
* Variable should be kept enclosed in functions whenever possible to avoid bad surprises when several channels are openned at once.
 +
 +
==== Tables and other hardcoded design choices ====
 +
A lot of tables are used at the moment and it's very hard to maintain, scale and read. It should be removed and the layout should only use floating divs to achieve complex layouts. It is also much more flexible as it decouple the markup language - that should kept as minimal as possible - from the design style sheet. It will also simplify the way towards full customization of a dmmdb page.
  
 
=== Community ===
 
=== Community ===
 
Social software is growing fast and there are more and more efforts to provide distributed systems. It would be good to see how dmmdb can interface with, for example, GNU Social, FOAF, etc.
 
Social software is growing fast and there are more and more efforts to provide distributed systems. It would be good to see how dmmdb can interface with, for example, GNU Social, FOAF, etc.

Latest revision as of 11:16, 19 August 2010

Note: This is a braindump, not a TODO, nor a roadmap. Just a loose collection of ideas for future releases of dmmdb.

Video Support

Supported Resolutions

All should be encoded with 1:1 pixel ratio and progressive scan

  • LD: 240p - 320x240 4:3 and 432x240 16:9
  • SD: 480p - 640x480 4:3 and 854x480 16:9
  • HD basic: 720p - 1280×720 16:9 only

Support for 16:9 and HD is a good thing as it is a default feature nowadays in any cheapo camera, phone devices.

Average Audio Data Rates

  • LD: 64kb ?
  • SD: 128kb ?
  • HD: 320kb ?

Average Video Data Rates

  • LD: 500kb ?
  • SD: 2000kb ?
  • HD: 5000kb ?

Codecs and encapsulers

  • ogg/vorbis-theora
  • WebM/VP8 ?

Original Material

On the server side config there could be an option that would enable or disable the keeping of the original files. If kept they shold be organized by channels (ie, in a folder with the channel name...)

Interface

Player

Size

Always set to 640px of width regardless of content. Which means that:

  • video res is perfect match when it plays SD/480p material (default view)
  • video res is stretched when it plays LD/240p material
  • video res is reduced when it plays HD/720p content.

HD/720p is meant to be played in FS anyway, no need to have a bigger player for the page.

Default and Fall-back back-end

Only two back-ends are needed to cover almost all situations and simplify maintenance:

  • default is HTML5 <video> tag
  • fall-back is a GPL flash player (flow player is the most advanced but their GPL license is funny)

Radical Idea: My personal view would be to outsource the issue entirely to a project such as videojs.com so that someone else can take care of all the heavy lifting and compatibility nightmare.

Interoperability

API

It would be nice to have a documentation of the API as it would encourage the contribution of client side tools/helpers and plugins. For example a CLI to upload and annotate the material.

Share

Wordpress

As far as I understand wordpress' editor for standalone installations disables any potentially risky tags in a post, making the <iframe></iframe> trick useless. To counter this it is required to make a special hack to embed GISS TV using short codes and functions.php in a theme (more on this soon).

Ideally the support should be provided by a plugin using the video upload interface of Wordpress (used for, a.o, Vimeo) or provide a GISS.tv shortcode plugin (used for, a.o, Vimeo) that does not involved hacking one's theme. It should not be too difficult to go from the functions.php shortcode hack to full plugin.

What do you embed

Behind the wordpress issue, there is a confusion, or at least some doubts:

  • It is easy to create such a plugin and embedding could even be simplified by just inserting a <video> tag in the post and some underlying text that points to the GISS channel, but is something else needed?
  • What about other CMS and blog engines? Do they also suffer from the forbidden direct usage of <iframe> and <object>?
  • What about the FLash player fallback? This should be handled by a js included in the embedded code?
  • How do the others do?

Development & Community

Workflow

Using a DVCS would bring more visibility and simplify the process of contributing/deploying code. There are many options out there, from the popular git to mercurial or the more exotic darcs. By using DVCS, contributors can silently fork the project and commit locally to test different features and keep track of their development, once mature and accepted they can be pushed (repos to repos or as patches) to the official repos. Silent forkers can also keep in sync with the official repos while testing their changes. A central repos (such as gitorious) can be used as backup for official repos or hub if the workflow is classic (central repository).

Refactoring

The code needs a serious cleaning, at the time of this writing, on the kurimu channel page:

  • W3C validator: 254 Errors and 38 warnings
  • webkist's inspector audit: nearly 100 of warning and problem on page's resources

For a future release, I would argue it might be easier to start from scratch if the client side of the project is not much entangled in the PHP code. Using Javascript to do all the interactions and calls to a PHP powered API.

Javascript

  • To simplify everything, each page should use XHTML and be kept as minimal as possible using as many js files as needed, so they can be tested independently and simplify maintenance and contrib. In-lining CSS or JS should be done if nothing else is possible.
  • Jquery should be the only lib used and should be used as much as possible for all the heavy lifting for UI and AJAX stuff.
  • Variable should be kept enclosed in functions whenever possible to avoid bad surprises when several channels are openned at once.

Tables and other hardcoded design choices

A lot of tables are used at the moment and it's very hard to maintain, scale and read. It should be removed and the layout should only use floating divs to achieve complex layouts. It is also much more flexible as it decouple the markup language - that should kept as minimal as possible - from the design style sheet. It will also simplify the way towards full customization of a dmmdb page.

Community

Social software is growing fast and there are more and more efforts to provide distributed systems. It would be good to see how dmmdb can interface with, for example, GNU Social, FOAF, etc.