WURFL

Last updated
Wurfl logo main 114px.png

WURFL (Wireless Universal Resource FiLe) is a set of proprietary application programming interfaces (APIs) and an XML configuration file which contains information about device capabilities and features for a variety of mobile devices, focused on mobile device detection. [1] [2] Until version 2.2, WURFL was released under an "open source / public domain" license. [3] 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 PHP WURFL API, formed ScientiaMobile, Inc to provide commercial mobile device detection support and services using WURFL. [4] As of August 30, 2011, the ScientiaMobile WURFL APIs are licensed under a dual-license model, using the AGPL license for non-commercial use and a proprietary commercial license. The current version of the WURFL database itself is no longer open source.

An application programming interface (API) is an interface or communication protocol between a client and a server intended to simplify the building of client-side software. It has been described as a “contract” between the client and the server, such that if the client makes a request in a specific format, it will always get a response in a specific format or initiate a defined action.

XML Markup language developed by the W3C for encoding of data

Extensible Markup Language (XML) is a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. The World Wide Web Consortium's XML 1.0 Specification of 1998 and several other related specifications—all of them free open standards—define XML.

Luca Passani is an Italian developer and the creator of WURFL, the de facto standard open source (FOSS) framework for addressing so-called Device Fragmentation in the mobile development space. Passani is still today the driving force behind WURFL development and support.

Contents

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.

Java Platform, Micro Edition or Java ME is a computing platform for development and deployment of portable code for embedded and mobile devices. Java ME was formerly known as Java 2 Platform, Micro Edition or J2ME.

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 Cloud

In March 2012, ScientiaMobile has announced the launch of the WURFL Cloud. [5] While the WURFL Cloud is a paid service, a free offer is made available to hobbyists and micro-companies for use on mobile sites with limited traffic. [6] Currently, the WURFL Cloud supports Java, Microsoft .NET, PHP, Ruby, Python, Node.js and the Perl programming languages [7] [8]

WURFL and Apache, NGINX and Varnish Cache

In October 2012, ScientiaMobile has announced the availability of a C++ API, an Apache module, an NGINX module and Varnish Cache module. [9] Differently from other WURFL APIs, the C++ API and the modules are distributed commercially exclusively. Several popular Linux distribution are supported through RPM and DEB packages. [10]

C++ General-purpose programming language

C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significantly over time, and modern C++ has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Oracle, and IBM, so it is available on many platforms.

Apache HTTP Server Open-source web server software

The Apache HTTP Server, colloquially called Apache, is free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is developed and maintained by an open community of developers under the auspices of the Apache Software Foundation.

Nginx is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and first publicly released in 2004. A company of the same name was founded in 2011 to provide support and Nginx plus paid software.

WURFL.io

In 2014, WURFL.io was launched. WURFL.io features non-commercial products and services from ScientiaMobile:

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 WML, C-HTML and XHTML Mobile Profile to the device from which the HTTP request originates, depending on the actual capabilities of the device itself. [13] Device capabilities are queried dynamically using the WURFL API. A WALL port to PHP (called WALL4PHP) is also available.

JavaServer Pages (JSP) is a collection of technologies that helps software developers create dynamically generated web pages based on HTML, XML, SOAP, or other document types. Released in 1999 by Sun Microsystems, JSP is similar to PHP and ASP, but it uses the Java programming language.

Wireless Markup Language markup language intended for devices that implement the Wireless Application Protocol specification

Wireless Markup Language (WML), based on XML, is a now-obsolete markup language intended for devices that implement the Wireless Application Protocol (WAP) specification, such as mobile phones. It provides navigational support, data input, hyperlinks, text and image presentation, and forms, much like HTML. It preceded the use of other markup languages now used with WAP, such as HTML itself, and XHTML.

XHTML Mobile Profile

XHTML Mobile Profile is a hypertextual computer language standard designed specifically for mobile phones and other resource-constrained devices.

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 [14] and includes clients for the following languages out of the box:

License update

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.

On January 3, 2012, ScientiaMobile filed a DMCA takedown notice against the open-source device database OpenDDR that contains data from a previous version of WURFL. According to OpenDDR, these data were available under GPL. [15]

On March 22, 2012 it was announced by Matthew Weier O'Phinney that Zend Framework would be dropping support for WURFL as of version 1.12. [16] This was due to the licence change which makes it incompatible with the Zend Framework's licensing [17] as the new licensing now requires that you "open-source the full source code of your web site, irrespective of the fact that you may modify the WURFL API or not." [18]

See also

Related Research Articles

Berkeley DB (BDB) is a software library intended to provide a high-performance embedded database for key/value data. Berkeley DB is written in C with API bindings for C++, C#, Java, Perl, PHP, Python, Ruby, Smalltalk, Tcl, and many other programming languages. BDB stores arbitrary key/data pairs as byte arrays, and supports multiple data items for a single key. Berkeley DB is not a relational database.

An application server is a software framework that provides both facilities to create web applications and a server environment to run them.

Zend Technologies company

Zend Technologies Ltd. is a world wide web infrastructure software company with headquarters in Cupertino, California, U.S., a technology center in Ramat Gan, Tel Aviv, Israel and offices in France, Italy and Germany. The company's operations are currently centered on the development of products relating to the development, deployment and management of PHP-based web applications, including Zend Studio.

Umbrello UML Modeller Unified Modelling Language (UML) diagram program

Umbrello UML Modeller is a free software UML diagram tool available natively for Unix-like platforms, as well as Microsoft Windows. It is bundled with KDE SC 4 but works well with other desktops and programming environments.

The Simplified Wrapper and Interface Generator (SWIG) is an open-source software tool used to connect computer programs or libraries written in C or C++ with scripting languages such as Lua, Perl, PHP, Python, R, Ruby, Tcl, and other languages like C#, Java, JavaScript, Go, Modula-3, OCaml, Octave, Scilab and Scheme. Output can also be in the form of XML or Lisp S-expressions.

LAMP (software bundle) software bundle

LAMP is an archetypal model of web service stacks, named as an acronym of the names of its original four open-source components: the Linux operating system, the Apache HTTP Server, the MySQL relational database management system (RDBMS), and the PHP programming language. The LAMP components are largely interchangeable and not limited to the original selection. As a solution stack, LAMP is suitable for building dynamic web sites and web applications.

libxml2 is a software library for parsing XML documents. It is also the basis for the libxslt library which processes XSLT-1.0 stylesheets.

Zend Framework (ZF) is an open source, object-oriented web application framework implemented in PHP 7 and licensed under the New BSD License. The framework is basically a collection of professional PHP-based packages. The framework uses various packages by the use of Composer as part of its package dependency managers; some of them are PHPUnit for testing all packages, Travis CI for continuous Integration Services. Zend Framework provides to users a support of the Model View Controller (MVC) in combination with Front Controller solution. MVC implementation in Zend Framework has five main areas. The router and dispatcher functions to decide which controller to run based on data from URL, and controller functions in combination with the model and view to develop and create the final web page.

Aptana

Aptana, Inc. is a company that makes web application development tools for use with a variety of programming languages. Aptana's main products include Aptana Studio, Aptana Cloud and Aptana Jaxer.

Content adaptation is the action of transforming content to adapt to device capabilities. Content adaptation is usually related to mobile devices, which require special handling because of their limited computational power, small screen size, and constrained keyboard functionality.

libvirt virtualization middleware

libvirt is an open-source API, daemon and management tool for managing platform virtualization. It can be used to manage KVM, Xen, VMware ESXi, QEMU and other virtualization technologies. These APIs are widely used in the orchestration layer of hypervisors in the development of a cloud-based solution.

Apache Attic is a project of Apache Software Foundation to provide process and solutions to make it clear when an Apache project has reached its end of life. The Attic project was created in November 2008. Also the retired projects can be retained.

NativeScript Open-source framework to develop native mobile apps

NativeScript is an open-source framework to develop apps on the Apple iOS and Android platforms. It was originally conceived and developed by Progress. NativeScript apps are built using JavaScript, or by using any language that transpiles to JavaScript, such as TypeScript. NativeScript supports the Angular and Vue JavaScript frameworks. Mobile applications built with NativeScript result in fully native apps, which use the same APIs as if they were developed in Xcode or Android Studio. Additionally, software developers can re-purpose third-party libraries from CocoaPods, Android Arsenal, Maven, and npm.js in their mobile applications without the need for wrappers.

PaizaCloud Cloud IDE

PaizaCloud Cloud IDE is an Cloud IDE(online integrated development environment). It supports programming languages, including C, C++, PHP, Ruby, Perl, Python, JavaScript with Node.js, and Go. It enables developers to get started with coding immediately with browser-based development environment.

References

  1. Hatem (February 11, 2007). "WURFL, Wireless Universal Resource File". phpmagazine.net. Retrieved December 29, 2011. WURFL is an open source project which aims to collect information regarding wireless devices' configurations, capabilities and features. [...] The file is XML formatted [...]
  2. Wong, Richard (March 4, 2010). "In Mobile, Fragmentation is Forever. Deal With It". TechCrunch . Retrieved December 29, 2011. WURFL— wireless universal resource file—an open source project; a “config file that contains all info on every wireless device on earth”
  3. "New WURFL Snapshot available, BUT WITH IMPORTANT CHANGE". 30 August 2011. Retrieved 7 September 2013.
  4. Krishna Guda, CEO, ScientiaMobile, Inc "WURFL Team Launches ScientiaMobile", June 6, 2011, accessed June 27, 2011.
  5. Passani, Luca (March 13, 2012). "Hear! Hear! the WURFL Cloud is finally here!". ScientiaMobile. Retrieved March 25, 2012. Many have asked about the availability of a WURFL Cloud over the years. The advent of ScientiaMobile has made this possible.
  6. ScientiaMobile, Inc. (March 19, 2012). "ScientiaMobile Launches WURFL Mobile Device Detection in the Cloud". PRWeb. Retrieved March 25, 2012. ScientiaMobile has always paid particular attention to the community of developers. The fact that we support a free option for certain classes of users is the proof of this. At the same time, our expertize in the enterprise world has enabled us to provide a solution that ‘cuts it’ for large companies too.
  7. ScientiaMobile, Inc. (October 17, 2012). "ScientiaMobile Launches Perl Client for the WURFL Cloud". PRWeb.
  8. "WURFL Cloud Getting Started". ScientiaMobile,Inc.
  9. Passani, Luca (October 2, 2012). "HTTP and Mobile: The Missing Header". ScientiaMobile. Retrieved October 20, 2012. Enriching the HTTP request or the Environment Variables with new headers and values are obvious use cases. This allows organizations to “inject” the value of WURFL without disrupting (or even without redeploying) existing sites and systems.
  10. ScientiaMobile, Inc, (October 2, 2012). "ScientiaMobile FAQ: C++ NGINX Varnish Apache". ScientiaMobile. Retrieved October 20, 2012. Differently from the Java, .NET, PHP and DB APIs, the C++ API and Modules are not released under a dual license, but exclusively under a commercial license. Interested parties can inquire about licensing the usual way.CS1 maint: extra punctuation (link) CS1 maint: multiple names: authors list (link)
  11. "Server Side Detection with JavaScript". smashingmagazine.com.
  12. "WURFL Image Tailor". scientiamobile.com.
  13. "WURFL and WALL". palowireless.com. Retrieved December 29, 2011. The Wireless Abstraction Library (called WALL) is a Java tag-library that gives you a universal mark-up for wireless devices.
  14. Remote Webservice. Tera-WURFL. Retrieved on 2014-05-23.
  15. Terence Eden: WURFL and database copyright, 2012-01-06
  16. ...due to a change in licensing by the WURFL project -- the free version is now AGPL -- we're dropping the WURFL adapter from Zend_Http_UserAgent...
  17. Zend Framework. Framework.zend.com. Retrieved on 2014-05-23.
  18. The AGPL license demands that you open-source the full source code of your web site, irrespective of the fact that you may modify the WURFL API or not.