Towards Automatic Verification of Javascript Programs

Total Page:16

File Type:pdf, Size:1020Kb

Towards Automatic Verification of Javascript Programs MENG INDIVIDUAL PROJECT DEPARTMENT OF COMPUTING Towards Automatic Verification of JavaScript Programs Supervisor: Author: Prof. Philippa Gardner Beatrix de Wilde Second Marker: Prof. Alessio R. Lomuscio June 19, 2017 Abstract JavaScript, due to its dynamic nature and complex semantics, has fewer verification tools than languages such as C and Java. In order to tackle this challenge, we introduce for the first time a bi-abductive symbolic analysis for JSIL, an intermediate language for JavaScript verification. Our analysis is scalable and can fully automatically infer specifications of JSIL procedures that are non-recursive and do not contain loops. Bi-Abduction provides the foundation of our analysis; we give the rules of our bi-abductive symbolic execution and prove their soundness. We further present an algorithm for generating procedure specifications using these rules. We give an implementation of our bi-abductive analysis for JSIL and use it to generate specifi- cations for JSIL programs. Using the tool, we generate and verify specifications for some of the JavaScript internal functions. Finally, we evaluate the quality of the automatically generated specifications by comparing them with their handwritten counterparts. Acknowledgements First, I would like to thank my supervisor, Prof. Philippa Gardner, for her wholehearted support throughout this project. I would also like to thank José Fragoso Santos for all his input and feedback, it has been a privilege to work with him. I am grateful to Petar Maksimovi´c and Azalea Raad, for sharing their insight during the project. For her inspiration and advice across my time at Imperial, I would like to thank my tutor, Prof. Susan Eisenbach. Finally, I would like to thank my family and friends for their endless support across these past four years. Contents 1 Introduction 5 2 Background 7 2.1 Program Verification..................................7 2.1.1 Program Correctness..............................7 2.1.2 Static Verification Techniques.........................8 2.1.3 Related Tools..................................9 2.2 Separation Logic and Tools............................... 10 2.2.1 Hoare Logic................................... 10 2.2.2 Separation Logic................................ 10 2.2.3 Bi-Abduction.................................. 11 2.2.4 Related Tools.................................. 11 2.3 The JavaScript Language................................ 12 2.4 The JavaScript Intermediate Language........................ 13 2.4.1 Motivation for JSIL............................... 14 2.4.2 The JavaScript Intermediate Language.................... 14 2.4.3 The JavaScript Verification Toolchain..................... 17 3 Symbolic Analysis 21 2 Contents 3 3.1 Axioms for Basic Commands.............................. 21 3.2 Symbolic Execution Rules for Control Flow Commands............... 25 4 Bi-Abductive Symbolic Analysis 31 4.1 Bi-Abductive Analysis: High Level Description.................... 31 4.2 Bi-Abductive Axioms for Basic Commands...................... 32 4.3 Bi-Abductive Proof Rules for Control Flow Commands............... 35 4.4 Bi-Abductive Algorithm for JSIL Programs...................... 39 5 Implementation for Bi-Abductive Symbolic Analysis 43 5.1 Architecture....................................... 43 5.2 Implementation Challenges.............................. 45 6 Evaluation 49 6.1 Evaluation Infrastructure................................ 49 6.2 Generating Specifications for the Internal Functions................. 50 6.2.1 Specification Comparison........................... 51 7 Conclusion 55 7.1 Objectives Achieved.................................. 55 7.2 Future Work....................................... 55 Bibliography 57 A JSIL Semantics and Substitution Lemma 61 A.0.1 JSIL Substitution Lemma........................... 61 A.0.2 JSIL Semantics................................. 61 Contents 4 Chapter 1 Introduction JavaScript is the developer’s language of choice for Web applications and is supported by all major browsers. It is an untyped, dynamic language, with complicated semantics and notori- ously confusing corner cases. Among other features, it supports extensible objects, prototype inheritance, dynamic property access, dynamic functions calls, and type coercion for delaying error reporting. These features interact in an intricate and sometimes unexpected fashion and can lead to developers unknowingly introducing bugs and vulnerabilities. For example, even simple addition can perplex the seasoned developer: adding an object to an empty string results in the number 0 rather than an error, whereas reversing the arguments leads to a completely different result and type. In particular, the JavaScript program ’’+ {} results in the string ’[object Object]’ whereas the program {} + ’’ results in the number 0. In addition to the substantial economic cost resulting from vulnerabilities, program errors in medical software have led to fatalities in the past. Developers aim to reduce bugs dominantly through testing and code reviews. This requires significant developer effort and is subject to human error. Therefore program verification tools have seen a rise in the recent years. For practical applications, it is vital that these tools can scale to industrial-level codebases. Com- pared to other languages, such as Java, C, and C++, JavaScript has far fewer tools available for developers. As part of an endeavour to verify JavaScript programs, the Program Specification and Verifica- tion Group at Imperial College London has developed JaVerT [35], which is a semi-automatic verification toolchain for JavaScript based on separation logic [40]. JaVerT can verify functional correctness properties of JavaScript programs annotated with preconditions and postconditions for functions, loop invariants, and folding and unfolding instructions for user-defined predi- cates, written in an assertion language, JS Logic. JaVerT translates JavaScript programs to the simple intermediate goto language JSIL, translates JS Logic assertions to JSIL Logic assertions, and performs verification at the level of JSIL. Correctness results have been established to prove that verification at the level of JSIL lifts to verification at the level of JavaScript. As a first step towards fully automated verification of JavaScript programs, we aim to generate automatic specifications for JSIL procedures. Bi-Abduction [12] is a technique for automatically generating specifications through the use of separation logic inference rules. The properties that can be proven using bi-abduction are weaker than those provable semi-automatically, but bi- abduction allows verification tools to scale to industry-grade code bases. 5 Chapter 1. Introduction 6 Motivation There are two key motivations for having a fully automatic tool: to automatically verify gen- eral properties and to support the developer in verifying functional properties of JavaScript programs. Specifications provide the footprint of a program. Therefore, using these specifications it is pos- sible to automatically verify properties of programs. In particular, verification of confinement properties is of interest for JavaScript programs. Confinement involves preventing untrusted code from modifying or accessing security-sensitive resources. As web applications are usually composed of many programs coming from different origins executing in the same global con- text, it would be beneficial to automatically verify whether sensitive resources get tainted or leaked. In addition to automatic verification of general properties, generating specifications can support developers in verifying functional properties. As it can be taxing for developers to manually annotate code and write specifications for a large codebase, automatically generating specifica- tions allows the developer to annotate an interesting subset of procedures or adapt generated specifications to verify more expressive functional properties. Contribution We formalise the symbolic analysis used for the semi-automatic JaVerT tool in a way that closely follows the implementation of the tool (Section3). In particular, and in contrast to a previous formalisation of JSIL logic [35], our analysis is specified in an algorithmic fashion, meaning that it can be straightforwardly implemented and serve as a basis for the bi-abductive analysis we are aiming at. Building upon our symbolic analysis for JSIL, we introduce a bi-abductive symbolic analysis that generates verifiable specifications for JSIL procedures (Section4). We establish the soundness of both analyses. Furthermore, we present an algorithm, that given a JSIL program, infers the specifications of its procedures. Our analysis is a first step to a fully-fledged bi-abudctive analysis for JSIL. In particular, we do not support the inference of loop invariants and specifications of recursive procedures. Finally, we introduce the tool, JSIL Abduce, that implements the bi-abductive symbolic analysis for JSIL. The tool is able to produce procedure specifications for a JSIL program (Section5). We evaluate the tool by using JSIL Abduce to automatically generate specifications for the JSIL implementations of the JavaScript internal functions (Section6). We check that the generated specifications are correct by checking that they are satisfied by their corresponding implemen- tations, using the existing verification tool for JSIL, JSIL Verify [35]. We analyse the quality of the bi-abductive analysis by comparing the inferred specifications with the prior handwritten specifications. In the conclusion (Section7)
Recommended publications
  • Desktop Migration and Administration Guide
    Red Hat Enterprise Linux 7 Desktop Migration and Administration Guide GNOME 3 desktop migration planning, deployment, configuration, and administration in RHEL 7 Last Updated: 2021-05-05 Red Hat Enterprise Linux 7 Desktop Migration and Administration Guide GNOME 3 desktop migration planning, deployment, configuration, and administration in RHEL 7 Marie Doleželová Red Hat Customer Content Services [email protected] Petr Kovář Red Hat Customer Content Services [email protected] Jana Heves Red Hat Customer Content Services Legal Notice Copyright © 2018 Red Hat, Inc. This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
    [Show full text]
  • Nix on SHARCNET
    Nix on SHARCNET Tyson Whitehead May 14, 2015 Nix Overview An enterprise approach to package management I a package is a specific piece of code compiled in a specific way I each package is entirely self contained and does not change I each users select what packages they want and gets a custom enviornment https://nixos.org/nix Ships with several thousand packages already created https://nixos.org/nixos/packages.html SHARCNET What this adds to SHARCNET I each user can have their own custom environments I environments should work everywhere (closed with no external dependencies) I several thousand new and newer packages Current issues (first is permanent, second will likely be resolved) I newer glibc requires kernel 2.6.32 so no requin I package can be used but not installed/removed on viz/vdi https: //sourceware.org/ml/libc-alpha/2014-01/msg00511.html Enabling Nix Nix is installed under /home/nixbld on SHARCNET. Enable for a single sessiong by running source /home/nixbld/profile.d/nix-profile.sh To always enable add this to the end of ~/.bash_profile echo source /home/nixbld/profile.d/nix-profile.sh \ >> ~/.bash_profile Reseting Nix A basic reset is done by removing all .nix* files from your home directory rm -fr ~/.nix* A complete reset done by remove your Nix per-user directories rm -fr /home/nixbld/var/nix/profile/per-user/$USER rm -fr /home/nixbld/var/nix/gcroots/per-user/$USER The nix-profile.sh script will re-create these with the defaults next time it runs. Environment The nix-env commands maintains your environments I query packages (available and installed) I create a new environment from current one by adding packages I create a new environment from current one by removing packages I switching between existing environments I delete unused environements Querying Packages The nix-env {--query | -q} ..
    [Show full text]
  • The Linux Command Line
    The Linux Command Line Fifth Internet Edition William Shotts A LinuxCommand.org Book Copyright ©2008-2019, William E. Shotts, Jr. This work is licensed under the Creative Commons Attribution-Noncommercial-No De- rivative Works 3.0 United States License. To view a copy of this license, visit the link above or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042. A version of this book is also available in printed form, published by No Starch Press. Copies may be purchased wherever fine books are sold. No Starch Press also offers elec- tronic formats for popular e-readers. They can be reached at: https://www.nostarch.com. Linux® is the registered trademark of Linus Torvalds. All other trademarks belong to their respective owners. This book is part of the LinuxCommand.org project, a site for Linux education and advo- cacy devoted to helping users of legacy operating systems migrate into the future. You may contact the LinuxCommand.org project at http://linuxcommand.org. Release History Version Date Description 19.01A January 28, 2019 Fifth Internet Edition (Corrected TOC) 19.01 January 17, 2019 Fifth Internet Edition. 17.10 October 19, 2017 Fourth Internet Edition. 16.07 July 28, 2016 Third Internet Edition. 13.07 July 6, 2013 Second Internet Edition. 09.12 December 14, 2009 First Internet Edition. Table of Contents Introduction....................................................................................................xvi Why Use the Command Line?......................................................................................xvi
    [Show full text]
  • A Brief History of GNOME
    A Brief History of GNOME Jonathan Blandford <[email protected]> July 29, 2017 MANCHESTER, UK 2 A Brief History of GNOME 2 Setting the Stage 1984 - 1997 A Brief History of GNOME 3 Setting the stage ● 1984 — X Windows created at MIT ● ● 1985 — GNU Manifesto Early graphics system for ● 1991 — GNU General Public License v2.0 Unix systems ● 1991 — Initial Linux release ● Created by MIT ● 1991 — Era of big projects ● Focused on mechanism, ● 1993 — Distributions appear not policy ● 1995 — Windows 95 released ● Holy Moly! X11 is almost ● 1995 — The GIMP released 35 years old ● 1996 — KDE Announced A Brief History of GNOME 4 twm circa 1995 ● Network Transparency ● Window Managers ● Netscape Navigator ● Toolkits (aw, motif) ● Simple apps ● Virtual Desktops / Workspaces A Brief History of GNOME 5 Setting the stage ● 1984 — X Windows created at MIT ● 1985 — GNU Manifesto ● Founded by Richard Stallman ● ● 1991 — GNU General Public License v2.0 Our fundamental Freedoms: ○ Freedom to run ● 1991 — Initial Linux release ○ Freedom to study ● 1991 — Era of big projects ○ Freedom to redistribute ○ Freedom to modify and ● 1993 — Distributions appear improve ● 1995 — Windows 95 released ● Also, a set of compilers, ● 1995 — The GIMP released userspace tools, editors, etc. ● 1996 — KDE Announced This was an overtly political movement and act A Brief History of GNOME 6 Setting the stage ● 1984 — X Windows created at MIT “The licenses for most software are ● 1985 — GNU Manifesto designed to take away your freedom to ● 1991 — GNU General Public License share and change it. By contrast, the v2.0 GNU General Public License is intended to guarantee your freedom to share and ● 1991 — Initial Linux release change free software--to make sure the ● 1991 — Era of big projects software is free for all its users.
    [Show full text]
  • MOVIAL Web UI Toolkit
    Cross platform via Gnome: Case Firefox (tm) • Introducing my self, who am I? • What am I talking about here? • The Use Case story • What's was available today • Gaps identified • The out come of all this • Road Map • Lessons learned • Questions ©© C COOPYRPYRIGHTIGHT 2 002070 7MO MOVIVIALAL C CORORPORPORATIATIOONN Who am I • Sampo Nurmentaus, A Linux geek from Finland • Msc. from Helsinki University of Technology • Have been trying to learn embedded Linux for last 6 years • Currently working for Movial, an end-to-end Linux and Usability solution provider © COPYRIGHT 2007 MOVIAL CORPORATION What am I talking about here • Have been working together with ARM Inc. to improve cross ARM architecture portability and Internet experience on mobile • Requirement #1: Have a platform with as good cross-platform portability for applications as feasible • Requirement #2: Provide a ”desktop-like” internet experience using Firefox on top of that platform © COPYRIGHT 2007 MOVIAL CORPORATION The Use Case story (1) Terhi picks up up the device and notices that the battery is still almost full despite few days on stand-by mode. She enters gmail.com URL to browser to read her emails. The device pops up a note listing available WLANs and Terhi pics up the Hotel hot spot and enters the encryption key the receptionist kindly gave her... © COPYRIGHT 2007 MOVIAL CORPORATION The Use Case story (2) ... After login in she gots an email with a link to a “supposed-to-be-funny” video clip on YouTube (tm). She clicks the link and the another browser window pops up connecting to youtube.com and playing the video clip.
    [Show full text]
  • Gconf: Manageable User Preferences
    GConf: Manageable User Preferences Havoc Pennington Red Hat, Inc. [email protected], http://pobox.com/˜hp Abstract liMirror and ACAP. Finally, it presents some initial ideas for a Phase Two version of GConf. GConf is a system for storing user prefer- Phase Two is very much a work-in-progress. ences, being deployed as part of the GNOME 2.0 desktop. This paper discusses the ben- 2 Motivation efits of the GConf system, the strengths and weaknesses of the current implementation, and plans for future enhancements. Several years ago it was becoming obvious that GNOME’s initial approach to storing prefer- ences (a simple API for writing key-value pairs 1 Introduction to files) had a lot of limitations: GConf started out very simply in late 1999, as • It did not work for preferences that af- my first project at Red Hat. It was a straightfor- fected or were manipulated by multiple ward response to concrete problems encoun- applications, because there was no way tered while creating the GNOME desktop, and for applications to know a setting had designed to be implementable in a few months changed. GNOME 1.x contains numerous by a programmer with limited experience (i.e., hacks to work around this, and apps have by me). Much of the current implementation to be restarted before certain preferences (let’s call it Phase One) was created at that take effect. time. • Administration features were missing, GConf saw some limited use as part of the such as applying different defaults to dif- GNOME 1.4 platform—specifically in Nau- ferent groups of users, or storing defaults tilus and Galeon—but it wasn’t widely adopted for many machines on one network server.
    [Show full text]
  • GNOME 3 Application Development Beginner's Guide
    GNOME 3 Application Development Beginner's Guide Step-by-step practical guide to get to grips with GNOME application development Mohammad Anwari BIRMINGHAM - MUMBAI GNOME 3 Application Development Beginner's Guide Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: February 2013 Production Reference: 1080213 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-942-7 www.packtpub.com Cover Image by Duraid Fatouhi ([email protected]) Credits Author Project Coordinator Mohammad Anwari Abhishek Kori Reviewers Proofreader Dhi Aurrahman Mario Cecere Joaquim Rocha Indexer Acquisition Editor Tejal Soni Mary Jasmine Graphics Lead Technical Editor Aditi Gajjar Ankita Shashi Production Coordinator Technical Editors Aparna Bhagat Charmaine Pereira Cover Work Dominic Pereira Aparna Bhagat Copy Editors Laxmi Subramanian Aditya Nair Alfida Paiva Ruta Waghmare Insiya Morbiwala About the Author Mohammad Anwari is a software hacker from Indonesia with more than 13 years of experience in software development.
    [Show full text]
  • 1.1 X Client/Server
    เดสกทอปลินุกซ เทพพิทักษ การุญบุญญานันท 2 สารบัญ 1 ระบบ X Window 5 1.1 ระบบ X Client/Server . 5 1.2 Window Manager . 6 1.3 Desktop Environment . 7 2 การปรับแตง GNOME 11 2.1 การติดตั้งฟอนต . 11 2.2 GConf . 12 2.3 การแสดงตัวอักษร . 13 2.4 พื้นหลัง . 15 2.5 Theme . 16 2.6 เมนู/ทูลบาร . 17 2.7 แปนพิมพ . 18 2.8 เมาส . 20 3 4 บทที่ 1 ระบบ X Window ระบบ GUI ที่อยูคูกับยูนิกซมมานานคือระบบ X Window ซึ่งพัฒนาโดยโครงการ Athena ที่ MIT รวมกับบริษัท Digital Equipment Corporation และบริษัทเอกชนจำนวนหนึ่ง ปจจุบัน X Window ดูแลโดย Open Group เปนระบบที่เปดทั้งในเรื่องโปรโตคอลและซอรสโคด ขณะที่เขียนเอกสารฉบับนี้ เวอรชันลาสุดของ X Window คือ เวอรชัน 11 รีลีส 6.6 (เรียกสั้นๆ วา X11R6.6) สำหรับลินุกซและระบบปฏิบัติการในตระกูลยูนิกซที่ทำงานบน PC ระบบ X Window ที่ใชจะมาจาก โครงการ XFree86 ซึ่งพัฒนาไดรเวอรสำหรับอุปกรณกราฟกตางๆ ที่ใชกับเครื่อง PC รุนลาสุดขณะที่ เขียนเอกสารนี้คือ 4.3.0 1.1 ระบบ X Client/Server X Window เปนระบบที่ทำงานผานระบบเครือขาย โดยแยกเปนสวน X client และ X server สื่อสาร กันผาน X protocol ดังนั้น โปรแกรมที่ทำงานบน X Window จะสามารถแสดงผลบนระบบปฏิบัติการ ที่ตางชนิดกันก็ได ตราบใดที่ระบบนั้นสามารถใหบริการผาน X protocol ได X client ไดแกโปรแกรมประยุกตตางๆ ที่จะขอใชบริการจาก X server ในการติดตอกับฮารดแวร เชน จอภาพ แปนพิมพ เมาส ฯลฯ ดังนั้น X server จึงทำงานอยูบนเครื่องที่อยูใกลผูใชเสมอ ในขณะที่ X client อาจอยูในเครื่องเดียวกันหรืออยูในเครื่องใดเครื่องหนึ่งในระบบเครือขายก็ได X client จะติดตอกับ X server ดวยการเรียก X library (เรียกสั้นๆ วา Xlib) API ตางๆ ใน Xlib มีหนาที่แปลงการเรียกฟงกชันแตละครั้งใหเปน request ในรูปของ X protocol เพื่อสงไปยัง X server
    [Show full text]
  • Pdfswqokdvt2o.Pdf
    GNOME 3 Application Development Beginner's Guide Step-by-step practical guide to get to grips with GNOME application development Mohammad Anwari BIRMINGHAM - MUMBAI GNOME 3 Application Development Beginner's Guide Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: February 2013 Production Reference: 1080213 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-942-7 www.packtpub.com Cover Image by Duraid Fatouhi ([email protected]) Credits Author Project Coordinator Mohammad Anwari Abhishek Kori Reviewers Proofreader Dhi Aurrahman Mario Cecere Joaquim Rocha Indexer Acquisition Editor Tejal Soni Mary Jasmine Graphics Lead Technical Editor Aditi Gajjar Ankita Shashi Production Coordinator Technical Editors Aparna Bhagat Charmaine Pereira Cover Work Dominic Pereira Aparna Bhagat Copy Editors Laxmi Subramanian Aditya Nair Alfida Paiva Ruta Waghmare Insiya Morbiwala About the Author Mohammad Anwari is a software hacker from Indonesia with more than 13 years of experience in software development.
    [Show full text]
  • Debian and Ubuntu
    Debian and Ubuntu Lucas Nussbaum lucas@{debian.org,ubuntu.com} lucas@{debian.org,ubuntu.com} Debian and Ubuntu 1 / 28 Why I am qualified to give this talk Debian Developer and Ubuntu Developer since 2006 Involved in improving collaboration between both projects Developed/Initiated : Multidistrotools, ubuntu usertag on the BTS, improvements to the merge process, Ubuntu box on the PTS, Ubuntu column on DDPO, . Attended Debconf and UDS Friends in both communities lucas@{debian.org,ubuntu.com} Debian and Ubuntu 2 / 28 What’s in this talk ? Ubuntu development process, and how it relates to Debian Discussion of the current state of affairs "OK, what should we do now ?" lucas@{debian.org,ubuntu.com} Debian and Ubuntu 3 / 28 The Ubuntu Development Process lucas@{debian.org,ubuntu.com} Debian and Ubuntu 4 / 28 Linux distributions 101 Take software developed by upstream projects Linux, X.org, GNOME, KDE, . Put it all nicely together Standardization / Integration Quality Assurance Support Get all the fame Ubuntu has one special upstream : Debian lucas@{debian.org,ubuntu.com} Debian and Ubuntu 5 / 28 Ubuntu’s upstreams Not that simple : changes required, sometimes Toolchain changes Bugfixes Integration (Launchpad) Newer releases Often not possible to do work in Debian first lucas@{debian.org,ubuntu.com} Debian and Ubuntu 6 / 28 Ubuntu Packages Workflow lucas@{debian.org,ubuntu.com} Debian and Ubuntu 7 / 28 Ubuntu Packages Workflow Ubuntu Karmic Excluding specific packages language-(support|pack)-*, kde-l10n-*, *ubuntu*, *launchpad* Missing 4% : Newer upstream
    [Show full text]
  • Using Generic Platform Components
    Maemo Diablo Reference Manual for maemo 4.1 Using Generic Platform Components December 22, 2008 Contents 1 Using Generic Platform Components 3 1.1 Introduction .............................. 3 1.2 File System - GnomeVFS ....................... 4 1.3 Message Bus System - D-Bus .................... 12 1.3.1 D-Bus Basics .......................... 12 1.3.2 LibOSSO ............................ 24 1.3.3 Using GLib Wrappers for D-Bus .............. 44 1.3.4 Implementing and Using D-Bus Signals .......... 66 1.3.5 Asynchronous GLib/D-Bus ................. 81 1.3.6 D-Bus Server Design Issues ................. 91 1.4 Application Preferences - GConf .................. 98 1.4.1 Using GConf ......................... 98 1.4.2 Using GConf to Read and Write Preferences ....... 100 1.4.3 Asynchronous GConf .................... 107 1.5 Alarm Framework .......................... 114 1.5.1 Alarm Events ......................... 115 1.5.2 Managing Alarm Events ................... 119 1.5.3 Checking for Errors ...................... 120 1.5.4 Localized Strings ....................... 121 1.6 Usage of Back-up Application .................... 123 1.6.1 Custom Back-up Locations ................. 123 1.6.2 After Restore Run Scripts .................. 124 1.7 Using Maemo Address Book API .................. 125 1.7.1 Using Library ......................... 125 1.7.2 Accessing Evolution Data Server (EDS) .......... 127 1.7.3 Creating User Interface ................... 132 1.7.4 Using Autoconf ........................ 136 1.8 Clipboard Usage ........................... 137 1.8.1 GtkClipboard API Changes ................. 137 1.8.2 GtkTextBuffer API Changes ................. 137 1.9 Global Search Usage ......................... 138 1.9.1 Global Search Plug-ins .................... 139 1.10 Writing "Send Via" Functionality .................. 141 1.11 Using HAL ............................... 142 1.11.1 Background .......................... 143 1.11.2 C API .............................
    [Show full text]
  • Introduction to GTK+
    Introduction to GTK+ Ted Gould PLUG Developers Meeting August 4th, 2003 http:/ / gould.cx/ ted/ projects/ gtkintro/ Presentation Outline ● GTK+ and helper libraries ● Glib Object Model ● GTK+ Programming <break> ● GNOME Libraries ● References GTK+ Overview ● Developed to move The GIMP off of Motif ● Realized that C could be object oriented ● Created in C for compatibility (every modern language can load C libraries) ● Large number of bindings (Effiel, Java, Ruby...) ● GUI Interface designer: Glade ● License: LGPL ● Used in the GNOME project (and many others) Helping out GTK+ Pango Text Rendering Library ● Greek 'Pan' for 'All' and Japanese 'Go' for language ● Internationalized text rendering library – not actually GTK+ specific, but used by GTK+ ● Uses Unicode internally ● Focus on 'correct' rendering of anything ● Font system and toolkit independent ● For modern Linux uses XFT Accessibility Toolkit ● Hard to find documentation on :) ● Allows GTK (and other) programs to be used by screen readers, magnifiers, etc. ● Developed by the developers that built the accessibility for Java ● Required for many corporations (especially gov't) to use software GDK: Gimp Display Kit ● Library to perform the actual rendering to the display ● Abstracts out the display so that it can be X11 or Win32 or Cocoa or whatever ● Also provides some pixmap functions if you need those (not covered today) Glib C Utility Library ● Makes C 'easy to use' ● Provides much of the functionality that is replicated in many programs ● Has things like: memory allocation, linked
    [Show full text]