
6 Porting Lua In 1993 a group of computer scientists working at a university in Rio de Janeiro developed a simple programming language called “Lua” to serve the needs of a Brazilian company based in the same city. Nineteen years later, Lua is often ranked among twenty of the world’s most popular program- ming languages1 (out of thousands) and has a user community spanning five continents. While Lua has brought its authors rather modest finan- cial rewards (it is distributed for free and brings little consulting revenue), its use in popular software such as Adobe Lightroom, World of Warcraft, and, more recently, Angry Birds, has made it in some ways one of the most successful software products ever developed in Latin America. Lua’s story provides us with a rather different picture of peripheral participation in a global world of practice than the case of Alta that I discussed in chapter 5. This picture is also a lot less intuitive and more complex. I therefore look at Lua extensively in two chapters: this one and the one that follows. One of the things that makes Lua’s story unintuitive is the fact that the language is little used in Brazil. In 2007, when I was doing my fieldwork, few Rio programmers had heard of it. The situation has changed only some- what since—Lua is now better known, but still rarely used. This isolation from the local context, however, is the flip side of Lua’s success. American users of Lua often credit it with being highly portable—Lua can run on many different computing platforms. While increased portability in this narrow technical sense is an important part of Lua’s story, I focus here on a different kind of “portability”: Lua’s gradual transformation from a highly local proj- ect to an international programming language that betrays little connec- tion to the city where it was developed and where it is still based. I organize my discussion around Giddens’s (1991) notion of “disembedding”—the “lifting out” of social (or in our case socio-technical) relations from their local context, which then makes them mobile across time and space. Fol- lowing Lua’s transition from a highly embedded project—developed as a Downloaded from http://direct.mit.edu/books/book/chapter-pdf/236139/9780262305594_cag.pdf by University of Washington user on 08 December 2020 136 Chapter 6 solution for a specific set of problems, entangled in a web of local rela- tions, goals, and commitments, and reliant on “tacit knowledge” (Polanyi 1966; MacKenzie and Spinardi 1995)—to an international programming language, we observe the different mechanisms that enabled and facilitated this disembedding. As we will see, Lua’s disembedding and its later international success were not planned in advance. To a large extent the disembedding of Lua simply “happened,” in many ways without a conscious intention by its authors. It happened in part due to numerous decisions that most par- ticipants saw as quite natural. In some of the cases, acting otherwise—for example, using Portuguese words as Lua’s keywords—would be nothing short of silly according to some of my interviewees. It is important, how- ever, to look closely at such “obvious” decisions. It is by understanding how such decisions come to be obvious, and why they are obvious to some and not others, that we can come to see the geographic logic woven into the professional culture of software development. The story of disembedding told in this chapter complements the investi- gation of local reassembly of a foreign practice presented in chapters 4 and 5. After decades of work that helped establish the foundation of software practice in Brazil, the context was created that made it possible for some of the practitioners to engage in one of the most central roles in the world of software: developing a new programming language. This replicated con- text, however, is characterized by a distinct pattern of connections that makes it different from the remote original in many ways. Brazilian aca- demic computer science has strong connections to foreign computer sci- ence, which proved an important factor in Lua’s success. At the same time, much unlike the American computer science research community, which is famous for tight linkages with industry, Brazilian academic computer science is relatively isolated from both local and foreign computer industry and instead exists in somewhat of an enclave. This makes the experience of Lua’s authors quite different from that of their students working for com- panies like Alta, whose success depends in many ways on tight integration with local systems of production. I start this chapter with a look at my interviews with Lua’s users in Cali- fornia in 2007. I then return to Lua’s history from the early 1990s, proceed- ing to around 2003, a point at which Lua could be said to have achieved its fullest disembedding and was starting to become a major success. In the next chapter, I then turn to the limitations of this process of disembedding, looking at Lua’s changing relationship with the university, city, and coun- try where it was born. Downloaded from http://direct.mit.edu/books/book/chapter-pdf/236139/9780262305594_cag.pdf by University of Washington user on 08 December 2020 Porting Lua 137 Choosing Lua “Craig,” one of the people who responded to my request for interviews sent to the Lua mailing list in early 2007, was an engineer at a small startup in California. Like most other users of Lua whom I interviewed in California, Craig encountered Lua online, while searching for a scripting language to embed in the software application he was working on, an online computer game. None of the people he knew personally at that point had heard of Lua before. Craig mentioned Lua’s small size and simplicity as the reasons for choosing it over a “more mature” language such as Python. He was particularly concerned with the security of his application and felt that a smaller and simpler language, one that he could understand more thor- oughly, would help. Craig noted an important weakness of Lua—the rela- tive scarcity of libraries, a hurdle faced by all new languages. This factor, however, was of little relevance to him. “We were not building an applica- tion [in Lua], like a web server or something else that would need a whole bunch of specialized libraries,” he said. They just needed a way to add scripting to an application they already had, written in C++. Craig’s use of Lua was quite typical: most Lua users in the United States employ Lua for “scripting” applications written in C, a programming lan- guage developed in the early 1970s, which came to dominate software development by the early 1990s. Over the last decade and a half, however, many developers have moved to newer languages such as Java, Python, or more recently Ruby. Those newer languages use a technology that relies on what is called a “virtual machine” (or VM)—a software layer that provides a degree of isolation between the programmer’s code and the machine’s hardware. This isolation makes it possible to develop software much more quickly, though at a price: the resulting software runs more slowly. Conse- quently, C and its close relative C++ remain popular, especially for the kind of software where speed is important.2 In theory, most of the new VM-based languages can be combined with C in a single application, potentially allowing the developer to get the best of both worlds. In such a hybrid design, some parts of the system would be written in C, while other parts would be “scripted” in some language that allows for easier development. (The words “scripting” and “programming” mostly mean the same thing, except that scripting usually suggests easier work that does not delve as deeply into the innards of the machine.) Such usage is often complicated and is frequently frowned upon. For example, Sun Microsystems had pursued a targeted campaign to eradicate such mixed applications involving Java, encouraging the programmers to write their Downloaded from http://direct.mit.edu/books/book/chapter-pdf/236139/9780262305594_cag.pdf by University of Washington user on 08 December 2020 138 Chapter 6 code in “100 percent pure Java.” Lua, on the other hand, generally presents itself as the language primarily designed to be used together with C. Lua has become particularly popular in the development of computer games, where efficient use of computer hardware is often crucial and the developers frequently work closely with C modules for handling graphics. Lua allows such developers to use “easy” Lua for parts of the code that are likely to change often, while relying on the more efficient C for tasks that are most likely to put strain on a computer’s resources. Lua thus thrives in a relatively small niche, where it has positioned itself as a complement to a well-accepted technology, offering certain unique features that shield it from devastating competition with the “more mature” languages such as Python. Developers like Craig note and appreciate Lua’s suitability for com- puter game development. Like other interviewees, Craig found it quite easy to get started with Lua. My question about how he learned to use Lua and what kind of resources he used took him by surprise. “I am sure I downloaded everything, ran the com- mand line, found out how that works,” he said after a pause. Another inter- viewee “Steve,” a lead engineer for a team of software developers working for a large software company in California, reported similar ease, which he then contrasted with JavaScript, a programming language developed by Netscape that my interviewees often considered an alternative to Lua.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages24 Page
-
File Size-