eBay Open Sources New Query Language

eBay’s Ql.io could make e-commerce web applications faster to develop – and use

eBay has released an open source programming language called ql.io that allows developers to simplify the way in which client applications retrieve and utilise data, reducing developer time, network latency and bandwidth usage.

Ql.io allows separate API requests for retrieving data, joining the results of requests and generating responses to be bundled into a single call, resulting in applications that appear more responsive, according to eBay.

Lower latency

“Ql.io is a declarative, evented, data-retrieval and aggregation gateway for HTTP APIs,” wrote eBay developer Subbu Allamaraju, who led the ql.io effort, in a blog post last week. “Through ql.io, we want to help application developers increase engineering clock speed and improve end user experience. Ql.io can reduce the number of lines of code required to call multiple HTTP APIs while simultaneously bringing down network latency and bandwidth usage in certain use cases.”

Allamaraju said eBay had been working on the language in order to address long-standing problems with the way web clients perform data calls.

“Writing HTTP client code to talk to APIs is verbose, repetitive, chatty and slow,” he wrote in an earlier post. “This is in addition to addressing latency and bandwidth constraints and core functionality of the client app – such as building a snappy UI or supporting some other business use case.”

He said a typical client might need to make three separate API calls in order to check data for a product list on an e-commerce website and make use of the information retrieved. Ql.io combines those three calls into a single call.

Ql.io includes a domain-specific language inspired by the SQL database query language and the JavaScript Object Notation (JSON) data interchange format, as well as a runtime based on node.js for processing ql.io scripts, Allamaraju said.

Efficiency

Using it should allow developers to reduce the number of lines of code needed to perform a query, reduce the number of queries and requests between client and server, and condense the data requested to the minimum number of fields.

It can be positioned close to the servers, close to the client, or as part of the client, depending on where the developer wants to minimise network latency.

The source code, licensed under the Apache Licence 2.0, has been released on the GitHub repository. eBay has also published some examples of how the language can be used on the ql.io website.