what is WURFL?

WURFL stands for Wireless Universal Resource FiLe. It is formerly a FOSS (which stands for Free and Open Source Software) community effort focused on the problem of presenting content on the wide variety of wireless devices. WURFL is a set of proprietary API’s and an XML configuration file which contains information about device capabilities and features for a variety of mobile devices. Until version 2.2, WURFL was release under an “open source / public domain” license[1]Prior to Version 2.2 device information was contributed by developers around the world and the WURFL was updated frequently reflecting new wireless devices coming on the market. In June 2011, the founder of the WURFL Project, Luca Passani, and Steve Kamerman, the author of Tera-WURFL, a popular high-performance PHP WURFL API, formed ScientiaMobile, Inc to provide commercial mobile device detection support and services, and is the driving force behind WURFL.[2] As of August 30, 2011, WURFL is licensed under a dual-license model, using the AGPL license for non-commercial use and a proprietary commercial license.


At the end of 1999 the first WAP phone was launched in Europe, followed by many others in the following months. By 2001 it became clear that WAP devices exhibited significant differences in the way they handled WAP content. The implication of this was that mobile developers found it difficult to support the increasing numbers of devices; the cost of application development, cost of testing and the cost of the very devices made WAP development expensive as compared to web development. Eventually, some developers realized that they could leverage the open-source model for their efforts. Luca Passani and Andrea Trasatti joined forces to build a community around a shared repository of device capability information, which they named WURFL. Over the years the project has gained followers and supporters from different geographical regions and with different backgrounds. The first basic API was in PerlJava and PHP libraries appeared shortly afterward, soon followed by a better.NET FrameworkPerl version, Ruby, and, more recently, PythonXSLT and C++.

Problem of device fragmentation

The desktop web-channel, which is primarily divided up between a handful of browsers, relies on HTML as its markup, and content written as HTML can be expected to be visible to most users of a web-based channel via one of the standard browsers (Internet ExplorerMozilla FirefoxSafariOpera, and so on). Software updates for desktop browsers are frequently made and widely distributed.

Unlike the desktop web-channel, there is a tremendous amount of fragmentation in the mobile device-channel. Markup can be WMLHTMLHDMLXHTML Mobile Profile, etc. In addition, unlike a standard desktop web-channel, a wireless-device channel will vary on screen size, ability to support client side scripting, ability to support various image formats, and even color. Because the markup is generally sent directly to the phone, there is no opportunity for a central server to “fix” or adapt to browser limitations or defects. Software updates for mobile browsers are rare.

Solution approaches

There have been several approaches to this problem, including developing very primitive content and hoping it works on a variety of devices, limiting support to a small subset of devices or bypassing the browser solution altogether and developing a Java ME or BREW client application.

WURFL solves this by allowing development of content pages using abstractions of page elements (buttons, links and textboxes for example). At run time, these are converted to the appropriate, specific markup types for each device. In addition, the developer can specify other content decisions be made at runtime based on device specific capabilities and features (which are all in the WURFL).

WURFL Capabilities

The WURFL contains over 500 capabilities for each device that are broken up into 30 groups. A complete listing of available capabilities is available from the WURFL Documentation page. There is an online WURFL test site called Tera-WURFL Explorer that allows you to lookup the capabilities of devices based on their user agents and browse through the devices in the current WURFL file.

WALL, Wireless Abstraction Library

WALL (Wireless Abstraction Library by Luca Passani) is a JSP tag library that lets a developer author mobile pages similar to plain HTML, while delivering WMLC-HTML and XHTML Mobile Profile to the device from which the HTTP request originates, depending on the actual capabilities of the device itself. Device capabilities are queried dynamically using the WURFL API. A WALL port to PHP (called WALL4PHP) is also available.

Supported implementations

WURFL is currently supported using the following.

The PHP/MySQL based Tera-WURFL API comes with a remote webservice that allows you to query the WURFL from any language that supports XML webservices [2] and includes clients for the following languages out of the box:

  • PHP
  • Perl
  • Python
  • JavaScript
  • ActionScript 3 (Flash / Flex / AIR / ECMAScript)

License Controversy

The August 29, 2011 update of WURFL included a new set of licensing terms. These terms set forth a number of licenses under which WURFL could be used. The free version of the license does not allow derivative works, and prevents direct access to the wurfl.xml file. As a result of the “no-derivates” clause, users are no longer permitted to add new device capabilities to the WURFL file either directly or through the submissions of “patches”. A commercial license is required to utilize third-party API’s with the WURFL Repository.

See also


  1. ^ . WURFL August release announcement [1], August 30, 2011,accessed September 17, 2011.
  2. ^ Krishna Guda, CEO, ScientiaMobile, Inc “WURFL Team Launches ScientiaMobile”, June 6, 2011, accessed June 27, 2011.

External links


Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s