(Alex Dixon / Flickr)
How did a programming language from the global South manage to make it into one of the world’s most popular web sites? Lua’s story, as it turns out, tells a lot about the globalization of software development and the difficulties faced by innovators in developing countries.
I first heard of Lua eight years ago, when I traveled to Rio de Janeiro to interview software engineers for a research project that was recently published as a book, Coding Places. While in Rio, I met “Rodrigo” (who has asked to remain anonymous), who worked on a free and open-source web platform. He surprised me by telling me that the project was based on a new programming language, Lua, developed by a small team at Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio), where Rodrigo had been a student.
I knew that PUC-Rio’s computer science program was considered one of Brazil’s best, and I was intrigued by the engineer’s reliance on local innovation. Even so, the project sounded futile. The world of software is dominated by network effects: The more people use a piece of software, the more valuable it becomes. This is particularly true for programming languages. For engineers, going with widely used languages means access to more jobs that require knowledge of those languages and more ready-built modules in that language to repurpose. For employers, using a popular language makes it possible to hire from a larger pool of engineers. Consequently, although countless programming languages have been developed, only a handful have been widely adopted. And nearly all of those originate from major U.S.-based corporations or research centers. None that I knew at the time came from a developing country.
Against this background, Lua’s chances seemed slim. So I decided to spend my time studying how local engineers applied technologies developed abroad -- a situation that seemed more common in Brazil and in the developing world at large. Just to be sure, of course, I did ask a few of my Brazilian interviewees what they thought of Lua. Most had never heard of it. Those who had, knew it was something that “the guys” at PUC-Rio were working on, but conveyed little confidence that it would succeed.
My opinion of Lua changed a year later, when, back in California, I read an article about the language on a popular site for technical news. Lua, it appeared, had a small but dedicated following outside Brazil. It was being used in numerous products, most notably in the World of Warcraft, a wildly popular online game in which players could employ Lua to customize the game’s user interface. I started thinking that I had perhaps missed something on my previous visit to Brazil.
I decided that I would devote a return trip to Brazil to exploring the Lua ecosystem by spending a few months working with Rodrigo on his project inside a small company in Rio. I planned to interview Lua’s authors and contributors, attend Lua programmer meet-ups and other events, and find other companies using the language. The first task was relatively easy. The second two, surprisingly, were not. There just weren’t any Lua events to attend, and I could find only one other company in Rio using the language. To observe Lua being used, I probably should have stayed in San Francisco. As it turned out, the language’s success abroad and its relative lack thereof at home were closely related.
A project born in a place like Rio de Janeiro must approach its early ties more cautiously. To have a chance of success elsewhere, it must first become mobile by dislodging itself from its original context. The history of Lua was a story of such dislodging. The language was originally developed in the early 1990s as part of its authors’ work at Tecgraf, a PUC-Rio consulting venture that offered services to Petrobras, Brazil’s biggest oil producer. Being embedded in software destined for Petrobras was perhaps the best local starting point for Lua, as the oil company is known for its commitment to innovation. But to have a shot at global success, Lua had to disentangle itself from its early national alliances and look for friends elsewhere.
Lua’s international success was facilitated by Lua’s increasing ability to fill a particular niche. Lua is especially useful for providing end users with an easy way to program the behavior of a software product without getting too far into its innards. The number of projects around the world needing such functionality is quite significant. Their number, however, is quite small in Rio, where most software projects involve building web applications, a task for which Lua was poorly suited. Rodrigo’s company was seeking to mend this -- his project ultimately aimed to extend Lua to web development. Until he succeeded, though, Lua was a better fit for foreign projects.
Cutting local ties is not enough, however. Global ties must be formed and exercised. For Lua, its team’s integration into the international world of academic computer science provided an early start. In 1996, the team published a paper about Lua in a U.S. journal read widely by American software developers, including videogame engineers at LucasArts, who decided to integrate Lua into one their games. Thanks to LucasArts programmers, Lua soon had friends in the right places. In 1998, LucasArts engineers advocated for Lua at the Games Developer’s Conference, the world’s largest game development event, in San Jose, California. Quite soon, other companies were decided to incorporate the language into their products as well.