Compatible Web Server Software
Site developers are required to develop sites that are compatible with PBS's existing Web server software and architecture, as outlined at http://dipsy.pbs.org/wiki/techdocs/index.php/Tech_Standards. PBS's current Web Server Software includes:
- Apache: 2.2.8
- PHP: 5.2.3: Configuration Details: http://www.pbs.org/private/phpinfo.php
- PERL: 5.6.1: Installed Modules: http://www.pbs.org/private/perl-5.6.1.html
- Python: 2.5
- MySQL: 5.0 Enterprise
- Django: 1.0
Site developers must be technically proficient and cannot rely solely on WYSIWYG — or "What You See Is What You Get" — development tools. Many WYSIWYG tools introduce proprietary code (code that will only work on some browsers) and can result in heavy and poorly constructed pages. If you are using a WYSIWYG tool, you must be able to "go under the hood" and fix improper scripting and coding as directed by PBS staff.
Sites must be developed using HTML specification 4.0 and cascading style sheet specification CSS1. Compliance with The World Wide Web Consortium (W3C) guidelines and recommendations is required. HTML standards must be compliant for the doc-type it is declaring. If it is not, PBS will not publish them.
Supported Web Browsers
Sites must be developed to support PBS-approved Web browsers across platforms. Although it is not assumed that all users will have the identical experiences when using different browsers, it is vital that every user be able to experience the same content and as much visual richness and interactivity as possible. PBS currently supports all "A-Grade" Browsers (http://developer.yahoo.com/yui/articles/gbs/), as defined by Yahoo!
Google Analytics Tagging
PBS uses Google Analytics as a preferred method of generating detailed statistics about visits to PBS.org Web sites. It is the producer's responsibility to request a Google Analytics account from their content manger during site production; metrics will be unavailable to the producer otherwise. To function properly, every page of a Web site on PBS.org must include the Google Analytics Tracking Code (GATC) through a Server Side Include. For more information and implementation techniques, visit http://dipsy.pbs.org/wiki/pbsi/index.php/Category:Metrics and http://dipsy.pbs.org/wiki/techdocs/index.php/Google_Analytics_Tagging.
PBS Code Widgets
Standard interactive features must be created using tried-and-true code available in the PBS code widget library. If a relevant code widget exists, PBS code must be used. PBS Techdocs (http://www.pbs.org/.techdocs) lists the current approved widgets for you to use.
Blog Publishing Platforms
PBS supports blogs developed with MovableType 4.2 publishing platform with Pro Pack, Perl version 5.6.1 as well as legacy versions 4.1 and 3.2. More information is available at: http://dipsy.pbs.org/wiki/techdocs/index.php/Movable_Type_Info.
Database Compatibility Requirements
All databases developed for PBS.org sites must be compatible with PBS's current web server software and follow PBS database requirements:
- Connecting to a Database: PBS provides application access to several Apache environment variables that represent database connection strings. "MYSQL_MASTER" is used for connections that require read/write access (such as administrative applications and tasks) – in most cases, developers should use "MYSQL_READONLY" for reading and displaying data stored within a database.
- Closing Database Connections: Be sure to close any open database connections or threads once done retrieving your data. Help keep connections freely available and useful for everyone!
- Protect Your Code/Verify Your Input: Beware of SQL injections — be sure to check all user-inputted variables and be sure to either escape or bind variables to avoid this attack.
- Normalization: Normalizing data can help increase efficiencies and reduce data redundancy (Read more about database normalization at: http://dev.mysql.com/tech-resources/articles/intro-to-normalization.html)
- Full-Text Searching and Indexing: Make use of alternate methods for searching on text fields within the database. Some examples include using memcached (http://dipsy.pbs.org/wiki/cat101/index.php/Memcached) or external search indexers, such as Xapian (http://xapian.org/). Full-text searching on PBS database servers can be slow for the user and cause increased loads for all of PBS.
- Optimizing Your Queries: Tune your queries with "EXPLAIN SELECT" in MySQL to help optimize your database and how you search or pull data from it.
Plug-in Introductory Text
When a plug-in is required to view site content, the teaser must be accompanied by introduction text that:
- Explains what the feature is
- Lists the file size of the feature
- Provides a link to the plug-in download page.
Use of any cookies is subject to the oversight of the PBS technical staff and cookies that extend beyond a user session must be developed in partnership with PBS technical staff.
Use your show's unique NOLA code to access broadcast information from the TV Schedules database. This is a 4 character code, all in CAPS, which identifies your show within the TV Schedules database. NOLA codes are unique for each program or series, e.g. AMFA for American Family, or AMMS for American Masters. Your PBS Interactive Content manager will provide the code, usually assigned by PBS Program Management, about 3 months before the broadcast premiere.
Airdate Code on PBS.org
When providing broadcast information, you must use PBS's airdates code. PBS's airdates code is a simple server-side include which can be customized by CSS. It automatically displays the correct broadcast dates and times for local stations, using data provided by TV Guide and cross-referenced with the episode titles and descriptions the producer provides to PBS Traffic and Operations.
For more information, read the detailed implementation steps on the PBS TechDocs site at http://dipsy.pbs.org/wiki/techdocs/index.php/DTV_Airdates_Code_for_Program_Sites.
Content Distribution Network (CDN)
Sites must use PBS's Content Distribution Network (CDN) as outlined at http://dipsy.pbs.org/wiki/techdocs/index.php/Tech_Standards#Content_Distribution_Network.