Data Structure Abstractions for Asynchronous Web Applications

Total Page:16

File Type:pdf, Size:1020Kb

Data Structure Abstractions for Asynchronous Web Applications MapJAX: Data Structure Abstractions for Asynchronous Web Applications Daniel S. Myers Jennifer N. Carlisle James A. Cowling Barbara H. Liskov MIT CSAIL MIT CSAIL MIT CSAIL MIT CSAIL Abstract is a communication technique known as AJAX: Asyn- chronous Javascript and XML [2]. Before AJAX, web The current approach to developing rich, interactive web applications were forced to fetch an entire page from the applications relies on asynchronous RPCs (Remote Pro- server in order to display any new data. By contrast, cedure Calls) to fetch new data to be displayed by the AJAX allows Javascript programs to send requests to the client. We argue that for the majority of web appli- server without reloading the page or blocking the user cations, this RPC-based model is not the correct ab- interface. This has permitted the development of a new straction: it forces programmers to use an awkward class of highly-responsive, desktop-like applications on continuation-passing style of programming and to ex- the web. Moreover, support for the underlying AJAX pend too much effort manually transferring data. We mechanisms is ubiquitous, having been present in web propose a new programming model, MapJAX, to rem- browsers since the late 1990s, so these applications can edy these problems. MapJAX provides the abstraction be delivered without the need for third-party plugins. of data structures shared between the browser and the The current AJAX programming model has two sig- server, based on the familiar primitives of objects, locks, nificant shortcomings, however. First, AJAX requires and threads. MapJAX also provides additional features that web clients request content from web servers us- (parallel for loops and prefetching) that help develop- ing asynchronous HTTP requests: the client bundles any ers minimize response times in their applications. Map- statements that depend on the result of the request into a JAX thus allows developers to focus on what they do callback that will be executed when the response to the best–writing compelling applications–rather than worry- HTTP request arrives. This approach forces program- ing about systems issues of data transfer and callback mers to use an awkward continuation-passing program- management. ming style and thread program state through a series of We describe the design and implementation of the callback functions. While various toolkits [9, 15] elevate MapJAX framework and show its use in three prototyp- the level of abstraction to that of an RPC, none has elim- ical web applications: a mapping application, an email inated the use of continuations and callbacks. client, and a search-autocomplete application. We evalu- Additionally, a programmer using AJAX must develop ate the performance of these applications under realistic his or her own techniques for avoiding delays associated Internet latency and bandwidth constraints and find that with fetching content from the server. These delays can the unoptimized MapJAX versions perform comparably be reduced by prefetching content before it is needed, to the standard AJAX versions, while MapJAX perfor- and by sending requests in parallel. Neither AJAX nor mance optimizations can dramatically improve perfor- current tools built on top of it provides direct support for mance, by close to a factor of 2 relative to non-MapJAX these approaches. code in some cases. This paper presents MapJAX, a data-centric frame- work for building AJAX applications without any new 1 Introduction client-side software. In place of asynchronous RPCs, MapJAX provides the programmer with the illusion of “It is really, really, really hard to build some- logical data structures shared between the client and thing like Gmail and Google Maps,” said server. These data structures appear to be ordinary ob- David Mendels, general manager of platform jects that can be accessed through normal Javascript products for Macromedia. “Google hired method calls, hiding the underlying complexity of con- rocket scientists... Most companies can’t go tinuations and callback functions. Instead, the code that and repeat what Google has done.” [1] causes a fetch of data from the server can be thought of as running in its own thread. The thread blocks while the Recent months have shown an explosive growth in call is being processed and then continues running when rich, interactive content on the World Wide Web — a the server response arrives. The MapJAX approach thus phenomenon termed Web 2.0. Central to this growth allows users to create programs with the mental model to USENIX Association 2007 USENIX Annual Technical Conference 101 which they have grown accustomed: threads and objects. formance improvements. to as much as a factor of 2 in In addition, MapJAX also provides a number of mech- some cases. anisms that enable efficient interaction between client and server. Given that the cost of communication far 2 Javascript and AJAX Applications exceeds the cost of computation in this setting, we fo- cus on ways to reduce communication delays. First, We first provide a brief overview of Javascript and MapJAX allows application programmers to decrease AJAX. The Javascript language was originally developed the latency involved in data structure access by using at Netscape in 1996 to allow interactivity in web pages. spare bandwidth to prefetch objects. The MapJAX run- In particular, Javascript allows handlers to be registered time maintains a cache of previously fetched objects and for activation in response to various events that can occur avoids communication delay when the requested content on the page, such as the page being loaded, the user click- is present in the cache. ing on a link, moving his or her mouse over an image, Second, MapJAX provides a mechanism that allows and so forth. While Javascript has seen use outside of a number of fetches to be sent in parallel. This is pro- the context of web pages, within this context Javascript vided in the form of a parallel for statement. A common programs are event-based. As only one event handler can use case for web applications is to copy a range of ele- execute concurrently and scheduling is non-preemptive, ments to the screen. This is naturally expressed as a se- Javascript programs can be viewed as executing under quential for loop over a shared data structure, albeit with a single-process, event driven (SPED) model similar to poor performance. Instead, the parallel for starts up the e.g. Zeus [17]. iterations in parallel, allowing the requests to be issued Application programmers can modify web page con- immediately and concurrently. tent from Javascript using the Document Object Model In order to allow applications to express ordering con- (DOM), a programmatically-accessible, tree-structured straints on these loops while preserving concurrency, representation of the elements on the page. MapJAX provides a new locking mechanism that allows Until relatively recently, Javascript was used only for a thread to reserve a lock in advance of acquiring it. Lock purely client-side tasks, such as verifying text input into reservation is non-blocking and simply places the identi- a zip-code form field. Since the late 1990’s however, fier of the thread into the lock queue. Later, the thread Javascript has contained an “XMLHttpRequest” object, acquires the lock using an acquisition function which allowing programmers to send asynchronously-handled blocks until the lock is available. As detailed in Sec- HTTP requests for XML-formatted data. The realiza- tion 3.5, this model allows threads to generate requests tion in the web development community that this ob- in parallel, yet process their responses in order. ject could be used to fetch new data without reloading MapJAX also provides a few additional features to in- a page gave rise to AJAX, standing for “Asynchronous crease the effectiveness of prefetching and parallel for. Javascript and XML”, although more recently alternative It is able to group a number of requests into one com- encodings such as Javascript Object Notation (JSON) [5] munication with the server, and it allows the program to have been used in place of XML. cancel requests that are no longer needed. MapJAX is defined as a small veneer over Javascript, 3 Programming Model as a goal of the system is to require a minimum of pro- grammer retraining. Its implementation consists of a This section describes the MapJAX programming model. compiler that translates MapJAX programs to Javascript, We begin with the basic features that allow programmers and a runtime system written in Javascript that provides to write working programs (shared data structures and the needed support for the MapJAX features. Despite non-preemptive threads), then describe various features significant work on programming environments for web that help them to improve performance (data prefetching, applications [13, 10, 9, 3, 15, 4, 11], we are not aware parallel for loops, RLU locks, and request canceling). of any existing work that provides a programming model like that of MapJAX. 3.1 MapJAX Maps We have used MapJAX to implement three prototyp- ical web applications–a mapping application, an email MapJAX objects represent logical data structures shared client, and a search autocomplete application. These between the client and server, and are at the core of the were all implemented with relative ease, while benefit- MapJAX system. These objects are collections of ele- ing from prefetching and parallel for loops. Our results ments, e.g., a collection of email messages, or a collec- show that MapJAX has minimal overhead compared to tion of grid cells in a mapping application. Each map is an equivalent AJAX program. The results also show that associated with a URL at the server to which requests are use of our advanced features resulted in substantial per- sent to retrieve elements. 102 2007 USENIX Annual Technical Conference USENIX Association may return immediately if the value is already cached.
Recommended publications
  • DIRECTOR's REPORT September 21, 2017
    DIRECTOR’S REPORT September 21, 2017 SUMMER PROGRAMMING The 2017 Summer Reading Club (SRC), Read Up! Rise Up! by Design, utilized key aspects of the design thinking methodology in the development of the SRC program curriculum. Design thinking, as it relates to program development, seeks to identify creative solutions to problems by utilizing solution-based strategies. In an ideal setting these creative strategies ultimately result in a constructive resolution to an identified problem or challenge. The design thinking methodology is used in a variety of disciplines i.e. urban planning, web development, education etc. Programming content focused on S.T.R.E.A.M (Science, Technology, Reading, Writing, Engineering, Arts and Math) related subjects. Throughout the summer program participants participated in variety of enrichment activities that promoted creative thinking, problem solving, reading, writing and other forms of creative expression. Summer Reading Club registration began May 15th, 2017 with the contest and associated programming continuing for 9 weeks (June 5th – August 5th). 10,156 students registered for this year’s SRC with 5,286 participants completing. The 2017 completion rate continued its upward trend with 52% of all participants completing the program. The Cleveland Public Library received generous financial and in-kind support from the Friends of the Cleveland Public Library Foundation, The Cleveland Museum of Art, The City of Cleveland, Cleveland Fire Department, Cleveland Metropolitan School District, United Way of Greater Cleveland, Greater Cleveland Food Bank, KPMG, Mitchell’s Ice Cream, McDonalds, and Georgio’s Pizza. The Library was also the recipient of multiple book grants that enabled children to receive free books for participating in the program.
    [Show full text]
  • Alternatives to Mvc for Web Applications
    Alternatives To Mvc For Web Applications Cleveland twins her perambulation inly, she repulsed it tails. Sporty and protracted Morly lionizes skeptically and distilling his exotics upwardly and sanctifyingly. Intranational and sonsy Woodman still revisit his phelloderm somnolently. We offer vendors absolutely not for mvc promoted using dependency injection, view system and double click on. Web application framework which sheet a modelviewcontroller MVC. Vue is with excellent alternative framework to hustle and leverage as society need. Artisan console tab or http handler has no more streamlined for software components are alternatives to. At the application for no, we have better have to check if they come to connect you will tell what data. Api rest of time and validation components like this power a more direct instantiation of applications to for mvc web layer and examples of asp update this discussion comes at the model. In mvc pattern never be useful, mobile application will only difficult. 10 Node Frameworks to vent in 2019 Scotchio. What a point many systems too much more community will surely help you can modify or surnames of. Wrong way for web application to work on azure active scan does. The alternative to for. Which is for mac support for quick and quicker manner without obscuring node modules. React Flux vs MVC Javatpoint. Why MVC is better probe the Web Form C Corner. In any subscribed parties within asp update panels are. This web mvc frameworks and you and double detection after development of. Database for the alternate form of the asynchronous technique. 11 Python Frameworks for Web Development In 2021.
    [Show full text]
  • Secure Programming Practices Lecture 5 Error Handling
    SWE 781 Secure Software Design and Programming Error Handling Lecture 5 Ron Ritchey, Ph.D. Chief Scientist 703/377.6704 [email protected] 0 Copyright Ronald W. Ritchey 2008, All Rights Reserved Schedule (tentative) Date Subject Sep 1st Introduction (today) ; Chess/West chapter 1, Wheeler chapters 1,2,3 Sep 8th Computer attack overview Sep 15th Input Validation; Chess/West chapter 5, Wheeler chapter 5 Sep 22nd Buffer Overflows; Chess/West chapters 6, 7; Wheeler chapter 6 Sep 29th Class Cancelled Oct 6th Error Handling; Chess/West chapter 8; Wheeler chapter 9 (9.1, 9.2, 9.3 only) Oct 13th Columbus Recess Oct 20th Mid-Term exam Oct 27th Mid Term Review / Major Assignment Introduction; Privacy, Secrets, and Cryptography; Chess/West chapter 11; Wheeler chapter 11 (11.3, 11.4, 11.5 only) Nov 3rd Implementing authentication and access control Nov 10th Web Application Vulnerabilities; Chess/West chapter 9,10 Nov 17th Secure programming best practices / Major Assignment Stage Check ; Chess/West chapter 12; Wheeler chapters 7,8,9,10 Nov 24th Static Code Analysis & Runtime Analysis Dec 1st The State of the Art (guest lecturer) Dec 8th TBD (Virtual Machines, Usability [phishing], E-Voting, Privilege Separation, Java Security, Network Security & Worms) 1 Copyright Ronald W. Ritchey 2008, All Rights Reserved Today’s Agenda * . Error Handling, What could possibly go wrong? . Handling return codes . Managing exceptions . Preventing resource leaks . Logging and debugging . Minor Assignment 3 * Today’s materials derive heavily from Chess/West, Securing Programming with Static Analysis 2 Copyright Ronald W. Ritchey 2008, All Rights Reserved Error Handling: What could possibly go wrong? 3 Copyright Ronald W.
    [Show full text]
  • Sell-1647C , Stratiform, Massive Sulfide, Sedimentary Deposits
    CONTACT INFORMATION Mining Records Curator Arizona Geological Survey 416 W. Congress St., Suite 100 Tucson, Arizona 85701 520-770-3500 http://www.azgs.az.gov [email protected] The following file is part of the James Doyle Sell Mining Collection ACCESS STATEMENT These digitized collections are accessible for purposes of education and research. We have indicated what we know about copyright and rights of privacy, publicity, or trademark. Due to the nature of archival collections, we are not always able to identify this information. We are eager to hear from any rights owners, so that we may obtain accurate information. Upon request, we will remove material from public view while we address a rights issue. CONSTRAINTS STATEMENT The Arizona Geological Survey does not claim to control all rights for all materials in its collection. These rights include, but are not limited to: copyright, privacy rights, and cultural protection rights. The User hereby assumes all responsibility for obtaining any rights to use the material in excess of “fair use.” The Survey makes no intellectual property claims to the products created by individual authors in the manuscript collections, except when the author deeded those rights to the Survey or when those authors were employed by the State of Arizona and created intellectual products as a function of their official duties. The Survey does maintain property rights to the physical and digital representations of the works. QUALITY STATEMENT The Arizona Geological Survey is not responsible for the accuracy of the records, information, or opinions that may be contained in the files. The Survey collects, catalogs, and archives data on mineral properties regardless of its views of the veracity or accuracy of those data.
    [Show full text]
  • Componentone Upload for ASP.NET Wijmo
    ComponentOne Upload for ASP.NET Wijmo Copyright 1987-2012 GrapeCity, Inc. All rights reserved. ComponentOne, a division of GrapeCity 201 South Highland Avenue, Third Floor Pittsburgh, PA 15206 • USA Internet: [email protected] Web site: http://www.componentone.com Sales E-mail: [email protected] Telephone: 1.800.858.2739 or 1.412.681.4343 (Pittsburgh, PA USA Office) Trademarks The ComponentOne product name is a trademark and ComponentOne is a registered trademark of GrapeCity, Inc. All other trademarks used herein are the properties of their respective owners. Warranty ComponentOne warrants that the original CD (or diskettes) are free from defects in material and workmanship, assuming normal use, for a period of 90 days from the date of purchase. If a defect occurs during this time, you may return the defective CD (or disk) to ComponentOne, along with a dated proof of purchase, and ComponentOne will replace it at no charge. After 90 days, you can obtain a replacement for a defective CD (or disk) by sending it and a check for $25 (to cover postage and handling) to ComponentOne. Except for the express warranty of the original CD (or disks) set forth here, ComponentOne makes no other warranties, express or implied. Every attempt has been made to ensure that the information contained in this manual is correct as of the time it was written. We are not responsible for any errors or omissions. ComponentOne’s liability is limited to the amount you paid for the product. ComponentOne is not liable for any special, consequential, or other damages for any reason.
    [Show full text]
  • Learning PHP 5 by David Sklar
    Learning PHP 5 By David Sklar Ripped by: Lilmeanman Dedication To Jacob, who can look forward to so much learning. Preface Boring web sites are static. Interesting web sites are dynamic. That is, their content changes. A giant static HTML page listing the names, pictures, descriptions, and prices of all 1,000 products a company has for sale is hard to use and takes forever to load. A dynamic web product catalog that lets you search and filter those products so you see only the six items that meet your price and category criteria is more useful, faster, and much more likely to close a sale. The PHP programming language makes it easy to build dynamic web sites. Whatever interactive excitement you want to create—such as a product catalog, a blog, a photo album, or an event calendar—PHP is up to the task. And after reading this book, you'll be up to the task of building that dynamic web site, too. Who This Book Is For This book is for: • A hobbyist who wants to create an interactive web site for himself, his family, or a nonprofit organization. • A web site builder who wants to use the PHP setup provided by an ISP or hosting provider. • A small business owner who wants to put her company on the Web. • A page designer who wants to communicate better with her developer co-workers. • A JavaScript whiz who wants to build server-side programs that complement her client-side code. • A blogger or HTML jockey who wants to easily add dynamic features to her site.
    [Show full text]
  • Enea® Linux Open Source Report
    Enea® Linux Open Source Report 4.0 Enea® Linux Open Source Report Enea® Linux Open Source Report Copyright Copyright © Enea Software AB 2014. This User Documentation consists of confidential information and is protected by Trade Secret Law. This notice of copyright does not indicate any actual or intended publication of this information. Except to the extent expressly stipulated in any software license agreement covering this User Documentation and/or corresponding software, no part of this User Documentation may be reproduced, transmitted, stored in a retrieval system, or translated, in any form or by any means, without the prior written permission of Enea Software AB. However, permission to print copies for personal use is hereby granted. Disclaimer The information in this User Documentation is subject to change without notice, and unless stipulated in any software license agreement covering this User Documentation and/or corresponding software, should not be construed as a commitment of Enea Software AB. Trademarks Enea®, Enea OSE®, and Polyhedra® are the registered trademarks of Enea AB and its subsidiaries. Enea OSE®ck, Enea OSE® Epsilon, Enea® Element, Enea® Optima, Enea® Linux, Enea® LINX, Enea® LWRT, Enea® Accelerator, Polyhedra® Flash DBMS, Polyhedra® Lite, Enea® dSPEED, Accelerating Network Convergence™, Device Software Optimized™, and Embedded for Leaders™ are unregistered trademarks of Enea AB or its subsidiaries. Any other company, product or service names mentioned in this document are the registered or unregistered trade- marks of their respective owner. Acknowledgements and Open Source License Conditions Information is found in the Release Information manual. © Enea Software AB 2014 4.0 ii Enea® Linux Open Source Report Table of Contents 1 - About this Report .......................................................................................................
    [Show full text]
  • Vector Graphics Computer Science Masters Dissertation
    Vector Graphics to improve BLAST graphic representations by Rafael Jimenez Computer Science Masters Dissertation School of Computer Science University of KwaZulu-Natal December, 2007 Abstract BLAST reports can be complicated. Viewing them graphically helps to understand them better, especially when the reports are long. At present "Web BLAST" and the stand-alone "wwwBLAST" versions, distributed by the NCBI, include graph- ical viewers for BLAST results. An alternative approach is "BLAST Graphic Viewer" developed by GMOD as part of the BioPerl library. It provides a more aesthetically pleasing and informative graphical visualization to represent BLAST results. All the strategies mentioned above are based on the use of bitmap graph- ics and dependent on JavaScript code embedded in HTML. We present Vector Graphic BLAST (VEGRA) a Python object orientated library based on BioPy- thon to yield graphical visualization of results from BLAST utilizing vector graph- ics. Graphics produced by VEGRA are better than bitmaps for illustration, more flexible because they can be resized and stretched, require less memory, and their interactivity is more effective as it is independent of tertiary technologies due to its integration into the graphic. In addition, the library facilitates a definition of any layout for the different components of the graphic, as well as adjustment of size and colour properties. This dissertation studies previous alternatives and improves them by making use of vector graphics and thus allowing more effective presentation of results. VEGRA is not just an improvement for BLAST visualiza- tion but a model that illustrates how other visualization tools could make use of vector graphics. VEGRA currently works with BLAST, nevertheless the library has been written to be extended to other visualization problems.
    [Show full text]
  • Superintendent United States Air Force Academy
    Superintendent United States Air Force Academy Lieutenant General Michelle Johnson United States Air Force Over the past year, I have witnessed our USAFA cadets respond with excellence to increasing amounts of responsibility—truly on track to become leaders of character. Taking responsibility for your actions extends to all avenues of the cadet experience. This handbook is an indispensible tool for your journey towards becoming an outstanding lieutenant for our Air Force; in one volume, it integrates the classroom, the squadron, the athletic field, and the airfield into a course of study intentionally and uniquely designed for the Air Force Academy. The Air Force Academy offers an experience unlike any other; and I am confident that through this experience, each of you will find a strong footing. Through the intense, four-year immersion experience you will graduate with a solid understanding of the Air Force mission in air, space, and cyberspace; your strong liberal arts education, infused with critical STEM competencies, will be further enhanced by the character and leadership development that guides each of you on a path to living honorably; and the competitive opportunities and exposure to Air Force professionals build critical leadership skills and reinforce the Airman ethos at every opportunity. As you transform the myriad development opportunities at USAFA into becoming outstanding second lieutenants for our Air Force, let this handbook serve as your guide in navigating the details of that journey and to holistically cultivate your Academy experience. Commandant of Cadets United States Air Force Academy Brigadier General Stephen Williams United States Air Force Our mission at USAFA is to educate, train and inspire you to become officers of character.
    [Show full text]
  • Overview of the Clients for AS a Client for Every Need
    Overview of the clients for AS A Client for every need . Why would you want more than one client for AS? . Different users have different needs: . Just run existing AS applications . Develop and maintain AS applications . Use AS commands for ad-hoc data analysis . Do further analysis of AS data on a PC . Combine with data from other sources . Use AS data/output in third-party software . Not able to use a 3270 user interface 2 Existing and New Clients for AS . 3270 AS Client . Shuttle AS Edition . Ascent Clients . Client Connections 3 3270 terminal emulation . How the majority of AS users have used AS in the past . Requires a 3270 emulator such as Rocket BlueZone or IBM Personal Communications . Best UI of any 3270 product! 4 Rocket.Ascent . Ascent is the new Rocket AS software that can run on multiple operating system platforms . There are two main components: . Ascent Client – user interface for end-users and AS developers . Client currently requires AS v6.3 . Ascent Server* – application server which client connects to and where AS procedures execute . The Client is available now, the Server is in development 5 Ascent Developer Client (Windows / Linux) . Built-on Eclipse, the popular Java-based development environment . Highly customizable user interface for a layout and style that suits you . Edit multiple procedures and data tables etc . Significant productivity gains for AS developers and power users 6 Ascent Viewer Client (Windows/Linux) . Great for PC users who just want to use an existing AS application . AS applications get an attractive modern PC style without any code changes .
    [Show full text]
  • Espinsights the Global Space Activity Monitor
    ESPInsights The Global Space Activity Monitor Issue 2 May–June 2019 CONTENTS FOCUS ..................................................................................................................... 1 European industrial leadership at stake ............................................................................ 1 SPACE POLICY AND PROGRAMMES .................................................................................... 2 EUROPE ................................................................................................................. 2 9th EU-ESA Space Council .......................................................................................... 2 Europe’s Martian ambitions take shape ......................................................................... 2 ESA’s advancements on Planetary Defence Systems ........................................................... 2 ESA prepares for rescuing Humans on Moon .................................................................... 3 ESA’s private partnerships ......................................................................................... 3 ESA’s international cooperation with Japan .................................................................... 3 New EU Parliament, new EU European Space Policy? ......................................................... 3 France reflects on its competitiveness and defence posture in space ...................................... 3 Germany joins consortium to support a European reusable rocket.........................................
    [Show full text]
  • Curriculum Vitae
    Vancouver, BC Canada +1.604.551.7988 KipWarner [email protected] Senior Software Engineer / Co-chairman OPMLWG 07 August 2021 *** WARNING: MANGLED TEXT COPY. DOWNLOAD PDF: www.thevertigo.com/getcv.php?fix Education 2007 Artificial Intelligence, BSc (Cognitive Systems: Computational Intelligence & Design) Department of Computer Science, University of British Columbia 2005 Associate of General Science Kwantlen Polytechnic University Professional Experience Jul 2015 - Cartesian Theatre, Vancouver, British Columbia Present Senior Software Engineer Techniques: Artificial intelligence, asymmetric cryptography, build automation, continuous integration testing, digital signal processing, machine learning, MapReduce, REST architecture, SIMD, and UNIX server daemon. Technologies: AltiVec / POWER Vector Media Extension; Apport; Assembly; AVX, Autopkgtest; Avahi / Apple’s Bonjour; Bash; C++17; CppUnit; cwrap (nss_wrapper); DBus; debhelper; GCC; GDB; Git; GNU Autotools; GNU/Linux; init.d; libav / FFmpeg; lsbinit; M4; OpenBMC; OpenSSL; Pistache; pkg-config; PortAudio; PostgreSQL; PPA; Python; QEMU; quilt; sbuild / pbuilder; setuptools; SQLite; STL; strace; systemd; Swagger; Umbrello; and Valgrind. Standards: Debian Configuration Management Specification; Debian Database Application Policy; Debian Policy Manual; Debian Python Policy; DEP-8; Filesystem Hierarchy Standard; freedesktop.org; GNU Coding Standards; IEEE 754; JSON; LSB; OpenAPI Specification; POSIX; RFC 4180; RSA; SQL; UNIX System V; UML; UPnP; and Zeroconf. Hardware: Ported to 64-bit PC
    [Show full text]