“Computing” Requirements for Open Source Software: a Distributed Cognitive Approach

Total Page:16

File Type:pdf, Size:1020Kb

“Computing” Requirements for Open Source Software: a Distributed Cognitive Approach View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by AIS Electronic Library (AISeL) Journal of the Association for Information Systems (2018) 19(12), 1217-1252 doi: 10.17705/1jais.00525 RESEARCH PAPER ISSN 1536-9323 “Computing” Requirements for Open Source Software: A Distributed Cognitive Approach Xuan Xiao1, Aron Lindberg2, Sean Hansen3, Kalle Lyytinen4 1Guangzhou University, China, [email protected] 2Stevens Institute of Technology, U.S.A., [email protected] 3Rochester Institute of Technology, U.S.A., [email protected] 4Case Western Reserve University, U.S.A., [email protected] Abstract Most requirements engineering (RE) research has been conducted in the context of structured and agile software development. Software, however, is increasingly developed in open source software (OSS) forms which have several unique characteristics. In this study, we approach OSS RE as a sociotechnical, distributed cognitive process where distributed actors “compute” requirements— i.e., transform requirements-related knowledge into forms that foster a shared understanding of what the software is going to do and how it can be implemented. Such computation takes place through social sharing of knowledge and the use of heterogeneous artifacts. To illustrate the value of this approach, we conduct a case study of a popular OSS project, Rubinius—a runtime environment for the Ruby programming language—and identify ways in which cognitive workload associated with RE becomes distributed socially, structurally, and temporally across actors and artifacts. We generalize our observations into an analytic framework of OSS RE, which delineates three stages of requirements computation: excavation, instantiation, and testing-in-the-wild. We show how the distributed, dynamic, and heterogeneous computational structure underlying OSS development builds an effective mechanism for managing requirements. Our study contributes to sorely needed theorizing of appropriate RE processes within highly distributed environments as it identifies and articulates several novel mechanisms that undergird cognitive processes associated with distributed forms of RE. Keywords: Open Source Software Development, Requirements Engineering, Distributed Cognition, Case Study, Heuristics, Ruby Programming Language Sandeep Purao was the accepting senior editor. This research article was submitted on November 18, 2015 and went through two revisions. Since the 1970s, requirements engineering (RE)—a 1 Introduction cohesive set of tasks that focus on discovering, specifying, and validating what software should do in The hardest single part of building a its use context—has constituted an essential challenge software system is deciding precisely what in software development (Brooks, 1995; Cheng & to build. No other part of the conceptual Atlee, 2009). Software requirements are known to be work is as difficult as establishing the uncertain, inconsistent, and temporally volatile detailed technical requirements (Brooks, (Damian, Helms, Kwan, Marczak, & Koelewijn, 1995, p. 199). 2013; Mathiassen, Tuunanen, Saarinen, & Rossi, 2007), and weaknesses in dealing with these 1217 Computing Requirements for Open Source Software requirements’ properties create a constant source of Our knowledge of OSS RE remains limited. The project stress and outright failure (Aurum & Wohlin, small number of studies conducted suggest that OSS 2005; Hickey & Davis, 2003). Over the last decade, projects settle requirements “on the fly” as software development has grown increasingly participants resolve and negotiate requirements by distributed and dynamic, making the RE challenge relying on multiple networks of communication even more formidable. A prominent example of this (Scacchi, 2002, 2009). Past research also sheds light change is the emergence of open source software on how OSS processes differ from traditional RE (OSS) development where volunteers, who work (Crowston et al., 2007; Scacchi, 2002, 2009; Shah, under open licensing agreements, deliver software in 2006). Yet, extant studies do not provide a a collaborative and distributed manner through public comprehensive account of how RE tasks are actually development platforms such as SourceForge and accomplished and how the interweaving of GitHub (Crowston, Li, Wei, Eseryel, & Howison, participants and artifacts ultimately makes 2007). These arrangements allow source code and requirements discovery, specification, and validation related design information to be freely used, possible. In particular, past studies do not explain modified, and disseminated among large numbers of why OSS RE activities appear to be stable, resilient, geographically distributed, autonomous developers. A and effective despite the dynamic and heterogeneous consequence of the distributed structure of OSS nature of the requirements knowledge, participants, projects is that they have ambiguous “customer” roles and related processes. Simply put, there is a and few “stages” or deadlines. Rather, the software substantial gap in the understanding of how and why evolves organically to meet the needs and aspirations OSS projects successfully manage their requirements. of its attendant community. The success of several This study seeks to address this gap by focusing on OSS projects and communities implies that somehow how the social, structural, and temporal organization “the right requirements” get decided upon, addressed, of OSS activities enables effective sharing and and eventually implemented “correctly.” The ways in coordination of requirements knowledge. which this outcome is achieved are the primary focus In addressing this research question, we approach RE of the present study. as a cognitive task—a knowledge-oriented effort in Traditional structured software development follows which participants seek to make sense of what well-defined RE principles such as time-bounded software should do and why. Given the heterogeneity discovery and documentation of needs conducted by a and dynamism of knowledge and its distribution stable team of analysts in relation to a clearly across actors and artifacts during OSS (Hansen, identified set of users. This arrangement provides Robinson, & Lyytinen, 2012), our analysis draws clarity around social and technological arrangements upon the theory of distributed cognition (DCog) that identify and manage requirements. Recently, with (Hutchins, 1995; Hutchins & Klausen, 1996). This the rising popularity of agile methods, some theory expands traditional models of cognition traditional RE activities (e.g., formal requirements centered on the mental processes of individuals to documentation and modeling) have been replaced by include an analysis of distributed, knowledge-related dynamic social practices such as face-to-face activities that involve multiple heterogeneous interaction and iterative prototyping. Because of the entities—both human and artificial. At the same time, distributed and voluntary nature of OSS, it follows DCog theory extends cognitive science’s fundamental neither structured nor agile forms of RE (Crowston & view of “cognition as computation”—i.e., the idea Kammerer, 1998; Hansen, Berente, & Lyytinen, that cognition is about the creation and manipulation 2009). OSS projects eschew RE formalisms, such as of symbol systems (Simon, 1980)—into broader detailed project plans and formal specifications sociotechnical settings. Accordingly, we treat OSS (Scacchi, 2002) that form the foundation for RE as a stream of distributed cognitive activities structured approaches to RE, but they also rely on few focused on what we refer to as the process of and intermittent face-to-face interactions due to their requirements computation—the transformation of voluntary and distributed natures. In contrast, vague requirements knowledge embedded and requirements knowledge in OSS is socially embedded discovered within a broader OSS environment, in various artifacts and conversations, highly diverse, through a set of artifacts and social mappings, into and widely distributed (Mockus, Fielding, & implementable code that realizes those requirements. Herbsleb, 2002). Due to high turnover rates (Robles Such computation is both enabled and constrained by & Gonzalez-Barahona, 2006), diverse motivations the dynamic reconfiguration of actors and artifacts, (Shah, 2006), and self-assignment (Crowston et al., often framed by simple heuristic rules that guide the 2007), the configuration of actors and artifacts in OSS organization and execution of the process. projects is also inherently volatile. How then do OSS We probe the essential characteristics of RE as projects successfully carry out RE given their sociotechnical “computation” through an exploratory dynamic and distributed natures? case study of a typical midsized OSS project— 1218 Journal of the Association for Information Systems Rubinius (a Ruby programming language runtime question: How can we be sure that we are working in environment: https://rubinius.com/). Through the case the right direction with the correct requirements? study, we demonstrate that computing requirements In structured development—commonly referred to as in an OSS project are made possible by a complex the waterfall model—these three RE facets are and dynamic cognitive system consisting of executed in a sequential manner (Larman & Basili, constellations of actors, artifacts, and temporal 2003). In addition, waterfall development is largely structuring mechanisms. Requirements knowledge
Recommended publications
  • Rubyperf.Pdf
    Ruby Performance. Tips, Tricks & Hacks Who am I? • Ezra Zygmuntowicz (zig-mun-tuv-itch) • Rubyist for 4 years • Engine Yard Founder and Architect • Blog: http://brainspl.at Ruby is Slow Ruby is Slow?!? Well, yes and no. The Ruby Performance Dichotomy Framework Code VS Application Code Benchmarking: The only way to really know performance characteristics Profiling: Measure don’t guess. ruby-prof What is all this good for in real life? Merb Merb Like most useful code it started as a hack, Merb == Mongrel + Erb • No cgi.rb !! • Clean room implementation of ActionPack • Thread Safe with configurable Mutex Locks • Rails compatible REST routing • No Magic( well less anyway ;) • Did I mention no cgi.rb? • Fast! On average 2-4 times faster than rails Design Goals • Small core framework for the VC in MVC • ORM agnostic, use ActiveRecord, Sequel, DataMapper or roll your own db access. • Prefer simple code over magic code • Keep the stack traces short( I’m looking at you alias_method_chain) • Thread safe, reentrant code Merb Hello World No code is faster then no code • Simplicity and clarity trumps magic every time. • When in doubt leave it out. • Core framework to stay small and simple and easy to extend without gross hacks • Prefer plugins for non core functionality • Plugins can be gems Key Differences • No auto-render. The return value of your controller actions is what gets returned to client • Merb’s render method just returns a string, allowing for multiple renders and more flexibility • PartController’s allow for encapsualted applets without big performance cost Why not work on Rails instead of making a new framework? • Originally I was trying to optimize Rails and make it more thread safe.
    [Show full text]
  • An Introduction to Computer Science with Java, Python and C++ Community College of Philadelphia Edition
    An Introduction to Computer Science with Java, Python and C++ Community College of Philadelphia edition Copyright 2017 by C.W. Herbert, all rights reserved. Last edited August 28, 2017 by C. W. Herbert This document is a draft of a chapter from An Introduction to Computer Science with Java, Python and C++, written by Charles Herbert. It is available free of charge for students in Computer Science courses at Community College of Philadelphia during the Fall 2017 semester. It may not be reproduced or distributed for any other purposes without proper prior permission. Please report any typos, other errors, or suggestions for improving the text to [email protected] 01010000 01111001 01110100 01101000 01101111 01101110 01001010 01100001 01110110 01100001 01000011 00101011 00101011 Chapter 1 – Introduction Contents About the Course .......................................................................................................................................... 2 Course Materials and Instructors.................................................................................................................. 3 Chapter 1 – Introduction ............................................................................................................................... 5 Learning Outcomes ....................................................................................................................................... 5 Computing and Computer Science ................................................................................... 6 The Computer
    [Show full text]
  • Deploying with Jruby Is the Definitive Text on Getting Jruby Applications up and Running
    Early Praise for Deploying JRuby Deploying with JRuby is the definitive text on getting JRuby applications up and running. Joe has pulled together a great collection of deployment knowledge, and the JRuby story is much stronger as a result. ➤ Charles Oliver Nutter JRuby Core team member and coauthor, Using JRuby Deploying with JRuby answers all of the most frequently asked questions regarding real-world use of JRuby that I have seen, including many we were not able to answer in Using JRuby. Whether you’re coming to JRuby from Ruby or Java, Joe fills in all the gaps you’ll need to deploy JRuby with confidence. ➤ Nick Sieger JRuby Core team member and coauthor, Using JRuby This book is an excellent guide to navigating the various JRuby deployment op- tions. Joe is fair in his assessment of these technologies and describes a clear path for getting your Ruby application up and running on the JVM. ➤ Bob McWhirter TorqueBox team lead at Red Hat Essential reading to learn not only how to deploy web applications on JRuby but also why. ➤ David Calavera Creator of Trinidad Deploying with JRuby is a must-read for anyone interested in production JRuby deployments. The book walks through the major deployment strategies by providing easy-to-follow examples that help the reader take full advantage of the JRuby servers while avoiding the common pitfalls of migrating an application to JRuby. ➤ Ben Browning TorqueBox developer at Red Hat Deploying with JRuby is an invaluable resource for anyone planning on using JRuby for web-based development. For those who have never used JRuby, Joe clearly presents its many advantages and few disadvantages in comparison to MRI.
    [Show full text]
  • Jruby: Ruby for the Java Platform
    JRuby: Ruby for the Java Platform Charles Oliver Nutter Thomas Enebo 1 Introductions: Who are we? • Charles Oliver Nutter - [email protected] • Thomas Enebo - [email protected] • Engineers at Sun, JRuby core developers • 10+ years Java experience each > Also C/C++, Win32, C#, .NET, JavaME/CLDC, Perl, LiteStep, JINI, JavaEE • Working to make Ruby a first-class JVM language • Working to make JVM a better home for dynlangs 2 Agenda • Introduction to JRuby • IRB Demo • JRuby on Rails • Simple JRuby on Rails Demo • Conclusion and Q/A 3 What Is JRuby • Started in 2002 • Ruby for the Java Platform • Open source, GPL/LGPL/CPL • Ruby 1.8.5 compatible • Easy integration with Java > Ruby can call Java, Java can call Ruby • JRuby Extras project > ActiveRecord-JDBC, GoldSpike, Mongrel... 4 JRuby 1.0 Released! • Ready for production use • Very good compatibility with Ruby 1.8.5 • ThoughtWorks offers commercial support for JRuby • Try it today! 5 Why Ruby Users Would Want JRuby • Performance improving day by day • Better scalability with native threading • Compilation to Java bytecode • Integration with Java libraries • Easier path to enterprise Ruby 6 JRuby is fast (Java 6 Server VM) ~/work/jruby $ jruby SERVER bench_fib_recursive.rb 2.071000 0.000000 2.071000 ( 2.070000) 1.234000 0.000000 1.234000 ( 1.234000) 1.372000 0.000000 1.372000 ( 1.373000) 1.372000 0.000000 1.372000 ( 1.372000) ~/work/jruby $ ruby -v ruby 1.8.5 (2006-12-25 patchlevel 12) [i686-darwin8.8.1] ~/work/jruby $ ruby bench_fib_recursive.rb 1.670000 0.010000 1.680000 ( 1.680365) 1.660000 0.010000 1.670000 ( 1.675206) ..
    [Show full text]
  • Introducing Ruby 2.5: a Full List of Additions and Updates Table of Contents
    Introducing Ruby 2.5: A Full List of Additions and Updates Table of Contents Introduction 3 New Feature in Hash: slice 6 New Feature in Hash: transform_keys 6 Keyword arguments on Struct.new 6 Pattern argument on Enumerable methods 8 Rescue on blocks 9 Top-level constant look-up is removed 10 New Feature in Pathname: glob 11 New Feature in Dir: children and each_child 11 New Feature on Kernel: yield_self 12 Backtrace and error message 12 pp.rb is automatically loaded 12 New Feature in String: delete_prefix and delete_suffix 13 New Feature in Array: append and prepend 14 Introducing Ruby 2.5: A Full List of Additions and Updates 2 Table of Contents New Feature in KeyError: receiver and key 15 New class: FrozenError 16 New Feature in ERB: result_with_hash 17 New Feature in SecureRandom: alphanumeric 18 New Feature in Set: to_s , === 18 New Feature in Set: reset 19 New Feature in File: lutime 20 Rubygems updated to 2.7.3 21 Gemification of standard 12 ubygems.rb removed from stdlib 22 Global VM Lock enhancements 22 Ruby OpenSSL is upgraded to 2.1 22 Conclusion 23 Introducing Ruby 2.5: A Full List of Additions and Updates 3 After more than 20 years, Ruby continues to grow, thanks to a strong open source community and the fact that more businesses are deploying business-critical web applications built on Ruby. The most recent version, Ruby 2.5, was released on Christmas Day in 2017, and offers a number of new features, many of which are outlined in this e-book.
    [Show full text]
  • The Ruby Way: Solutions and Techniques in Ruby Programming
    Praise for The Ruby Way, Third Edition “Sticking to its tried and tested formula of cutting right to the techniques the modern day Rubyist needs to know, the latest edition of The Ruby Way keeps its strong reputation going for the latest generation of the Ruby language.” Peter Cooper Editor of Ruby Weekly “The authors’ excellent work and meticulous attention to detail continues in this lat- est update; this book remains an outstanding reference for the beginning Ruby pro- grammer—as well as the seasoned developer who needs a quick refresh on Ruby. Highly recommended for anyone interested in Ruby programming.” Kelvin Meeks Enterprise Architect Praise for Previous Editions of The Ruby Way “Among other things, this book excels at explaining metaprogramming, one of the most interesting aspects of Ruby. Many of the early ideas for Rails were inspired by the first edition, especially what is now Chapter 11. It puts you on a rollercoaster ride between ‘How could I use this?’ and ‘This is so cool!’ Once you get on that roller- coaster, there’s no turning back.” David Heinemeier Hansson Creator of Ruby on Rails, Founder at Basecamp “The appearance of the second edition of this classic book is an exciting event for Rubyists—and for lovers of superb technical writing in general. Hal Fulton brings a lively erudition and an engaging, lucid style to bear on a thorough and meticulously exact exposition of Ruby. You palpably feel the presence of a teacher who knows a tremendous amount and really wants to help you know it too.” David Alan Black Author of The Well-Grounded Rubyist “This is an excellent resource for gaining insight into how and why Ruby works.
    [Show full text]
  • Linh Chau Enterprise Software Architect
    Linh Chau Enterprise Software Architect/Senior Software Engineer Current Location: Austin, TX Email: [email protected] Personal public code repository: https://bitbucket.org/linhchauatl/ PROFESSIONAL QUALIFICATIONS • Twenty three years working experience as Software Developer (three years in Asia, two years in Germany and eighteen years in the United States). • Eighteen years experience of team work and leadership with local and distributed groups in Germany, United States, Japan, France, China, etc. • Eighteen years of intensive experience in configuration management, source code control, version configuration. • Twenty one years experience of Software development using OO methodologies, OOA, OOD, Design Patterns, UML visual design with Rational Rose, Agile, XP. • Good communication skills, both written and verbal. • Sixteen years experience with Enterprise Production Systems (PDM, PLM, CRM, and ERP) written in Java and Ruby. SKILLS: Operating Systems Mac OS X, iOS, Linux (RedHat, CentOS, Ubuntu, Mint) Languages Ruby, C++, C, Java, Go, Elixir, Rust, javascript UI Technologies HTML, CSS, HAML, ERB, Slim, Ajax, jQuery, ReactJS Frameworks Rails, Sinatra Web servers & App Apache, Nginx, Unicorn, Puma, Passenger, Mongrel, lighttpd, Tomcat, servers JRun, WebLogic, WebSphere, JBoss Databases MySQL, PostgreSQL, MongoDB, Oracle, DynamoDB, SQL Server Methodology Agile, Scrum, BDD, TDD, RUP, XP (Extreme Programming), OOAD, Design Patterns Tools & Utilities Git, docker, AWS services (EC2, S3, ELB, RDS, DynamoDB, ASG, Route53, SQS, SNS …etc…),
    [Show full text]
  • Licensing Information User Manual for Peoplesoft Campus Solutions 9.2 (Through Update Image 20)
    Licensing Information User Manual for PeopleSoft Campus Solutions 9.2 (through Update Image 20) April 2021 Licensing Information User Manual for PeopleSoft Campus Solutions 9.2 (through Update Image 20) Copyright © 1988, 2021, Oracle and/or its affiliates. This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or “commercial computer software documentation” pursuant
    [Show full text]
  • Security Goodness with Ruby on Rails SOURCE BARCELONA 16Th November 2011
    Daniel Peláez [email protected] Security Goodness with Ruby On Rails SOURCE BARCELONA 16th November 2011 ©2011 Gotham Digital Science, Ltd AGENDA • Who Am I? • Brief Introduction to Rails • How Secure is Ruby On Rails? • Auditing Applications • Building Secure Rails WebSites Best practices, tools, security APIs. How to identify and fix common vulnerabilities. - 2 - WHO AM I? IT Security Consultant at Gotham Digital Science (GDS) o Another crazy Spaniard who recently moved to London o I have some experience with Rails & also with Security: • Pentests • Source Code Reviews • Consulting • Blablabla :) - 3 - ABOUT GDS o Gotham Digital Science (GDS) is an international security services company specializing in Application and Network Infrastructure security, and Information Security Risk Management. GDS clients number among the largest financial services institutions and software development companies in the world. o Offices in London and New York City - 4 - ABOUT GDS o Tools & Papers: o Padbuster, Blazentoo, GwtEnum … etc o Publications with GDS Contributing Authors: - 5 - Overview of what is Rails BRIEF INTRODUCTION SECURITY GOODNESS WITH RUBY ON RAILS - 6 - BRIEF INTRODUCTION TO RAILS www.rubyonrails.org - 7 - BRIEF INTRODUCTION TO RAILS • WebSite Industries - 8 - BRIEF INTRODUCTION TO RAILS • Who uses Rails? . Twitter (In the early days) . Hulu . Groupon . Zendesk . Linkedin . YellowPages . Github . OneHub . Basecamp . Jobster . SlideShare . Heroku . Funny or Die . Rackspace . Scribd . Engine Yard . CrunchBase . Shopify - 9 - BRIEF
    [Show full text]
  • Ecosystems in Github and a Method for Ecosystem Identification Using
    Ecosystems in GitHub and a Method for Ecosystem Identification using Reference Coupling Kelly Blincoe, Francis Harrison and Daniela Damian Software Engineering Global InterAction Lab University of Victoria Victoria, BC, Canada Email: [email protected], [email protected], [email protected] Abstract—Software projects are not developed in isolation. To identify technical dependencies, we turn to cross- Recent research has shifted to studying software ecosystems, references on GitHub, a social code hosting service. GitHub communities of projects that depend on each other and are encourages collaboration between users both within and across developed together. However, identifying technical dependencies at the ecosystem level can be challenging. In this paper, we projects through its transparent interface and built-in social 1 propose a new method, known as reference coupling, for detecting features. With GitHub Flavored Markdown , when a user technical dependencies between projects. The method establishes cross-references another repository in a pull request, issue or dependencies through user-specified cross-references between commit comment a link to the other repository is automati- projects. We use our method to identify ecosystems in GitHub- cally created. This introduces a way for developers to bring hosted projects, and we identify several characteristics of the identified ecosystems. We find that most ecosystems are centered awareness across repositories. In this paper, we investigate around one project and are interconnected with other ecosystems. whether these cross-references indicate a technical dependency The predominant type of ecosystems are those that develop between the two repositories by examining a set of these tools to support software development. We also found that the cross-references.
    [Show full text]
  • Why's (Poignant) Guide to Ruby
    1. About this Book 2. Kon’nichi wa, Ruby 1. Opening This Book Pretend that you’ve opened this book (although you probably have opened this book), just to find a huge onion right in the middle crease of the book. (The manufacturer of the book has included the onion at my request.) So you’re like, “Wow, this book comes with an onion!” (Even if you don’t particularly like onions, I’m sure you can appreciate the logistics of shipping any sort of produce discreetly inside of an alleged programming manual.) Then you ask yourself, “Wait a minute. I thought this was a book on Ruby, the incredible new programming language from Japan. And although I can appreciate the logistics of shipping any sort of produce discreetly inside of an alleged programming manual: Why an onion? What am I supposed to do with it?” No. Please don’t puzzle over it. You don’t need to do anything with the onion. Set the onion aside and let it do something with you. I’ll be straight with you. I want you to cry. To weep. To whimper sweetly. This book is a poignant guide to Ruby. That means code so beautiful that tears are shed. That means gallant tales and somber truths that have you waking up the next morning in the arms of this book. Hugging it tightly to you all the day long. If necessary, fashion a makeshift hip holster for Why’s (Poignant) Guide to Ruby, so you can always have this book’s tender companionship.
    [Show full text]
  • Samuel Tesla Automation Developer Engine Yard [email protected] What Is Git? Version Control System
    DVCS and Git Samuel Tesla Automation Developer Engine Yard [email protected] What is Git? Version Control System • RCS • CVS • Subversion • Perforce • VSS • Vault Distributed Version Control System • Mercurial (hg) • Bazaar (bzr) • Git • Monticello • Darcs Subversion • Centralized repository is a single point of failure. • The repository is the only place where history is stored. • Working copies are just a snapshot. • Cannot commit offline. Git • There are only repositories. • Your “working copy” is a complete repository. • Commits are made locally. • Changes are pushed to or pulled from other repositories. • Commits can be made offline. Your Your Private Public Repo You Push Repo You Pull They Pull Their They Push Their Public Private Repo Repo Two Person Example Why use Git? Peer Pressure • Linux • KDE • Wine • Ruby on Rails • Merb • Rubinius Scalability • No central repository means no single bottleneck. • The pull model eliminates the need for a committers list, and all the politics that go with it. • The trust model is much more scalable. Safety • Every copy of the repository has a complete copy of the history. • Git uses cryptographic hashes to prove that the content you get out is the same content you put in. • You do not have to grant access to your repository to anybody. Convenience • Git is ultimately configurable. • Git can be used offline. • Branches can be made locally to manage changes. • Git is fast. • Git merges very well. Demonstration Resources • http://git.or.cz/ • http://github.com/ • http://www.selenic.com/mercurial/wiki/ • http://bazaar-vcs.org/ • http://darcs.net/ Questions?.
    [Show full text]