Overview of Sparta to Jira Migration1

Total Page:16

File Type:pdf, Size:1020Kb

Overview of Sparta to Jira Migration1 ADTRAN MEMORANDUM CTB-2009-02 DATE: 06/05/09 SUBJECT: Overview of Sparta to Jira Migration1 FROM: C. Trevor Bowen TO: Quality Directors and Managers, Dennis McMahan COPY TO: Dan Joffe ABSTRACT Sparta is a long-standing issue tracking system, developed internally by Adtran, and used since 1998. With over 50,000 issues, Sparta has served Adtran well in managing defects. However, Adtran has recently begun migrating from Sparta to Jira. Sparta is written in Microsoft's ASP, based in Microsoft's SQL 2000, and hosted on a Microsoft Windows 2000 platform. Jira is written in Java, based on MySQL's 5.0 database, and hosted on a Linux RHEL 5.2 clone platform. Migration between the two systems requires some knowledge of both systems, especially the target system, Jira and MySQL. This memo overviews some of the essential concepts of both systems, as well as detailing fundamentals of the custom tools developed to perform the migration. This information should prove helpful as Adtran's other issue tracking systems are migrated to Jira. 1 /home/tbowen/Desktop/ctb_2009-02_sparta_jira_migration.odt Page 1 of 11 ADTRAN MEMORANDUM CTB-2009-02 INTRODUCTION Sparta was developed internally by Adtran and used since 1998 to track issues and defects. However, Adtran has recently begun to migrate from Sparta to Jira, a popular commercial issue management system. The EN division has already migrated all open field issues to Jira, as of May 2009. New issues are being entered into Jira, instead of Sparta. Adtran's CN division is in the process of defining data categorization, workflow, and view screens. Once this is finalized, and some training is provided, the CN division will migrate to Jira too. The Sparta tool uses Microsoft's SQL Server 2000 as its back-end database. User's interact with Sparta through a web-browser, Microsoft's Internet Information Services (IIS), and a front-end developed in Microsoft's ASP language. The Sparta tool resides on the Adtran server, srv-sparta. Jira is a front-end, written in Java, executed in most any Java Server, such as Tomcat. Jira can use most any SQL backend relational database management system, but Adtran uses MySQL. A traditional web- server is not essential, because Tomcat can serve traditional content as well as Java Server Pages (JSP). However, Apache is used to proxy traffic to eliminate Tomcat's annoying, port 8080 suffix. Adtran's primary Jira instance resides on the Adtran server, jira.adtran.com. Migration was complicated, because Adtran had a live Jira system with production data, and because the architecture was completely different for both systems. Ultimately, a program was developed in Perl that was used to directly read the data from Sparta's MS-SQL server, transform it appropriately, and directly write it to the MySQL database of an offline Jira development server. After the developmental database was verified, it was uploaded to the offline production server, which was afterward restarted. This memo explains the rationale, method, and complications of the path chosen to migrate the data. Adtran has many different issue tracking systems, which may one day all be migrated to Jira. If that occurs, then fundamentals of this process must be well understood and documented, as they will be used repeatedly. MIGRATION METHODS Adtran's migration to Jira is not a unique challenge. In fact, Jira's developer, Atlassian, details several different methods for migrating data to Jira: http://confluence.atlassian.com/display/JIRA/Migrating+from+Other+Issue+Trackers 1. Built-in importers – Developed specifically for importing from Bugzilla, Mantis, and FogBugz – and no other systems. 2. CSV Importer – Jira offers a built-in wizard that imports issue data packed into a CSV format. However, this only migrates issue basics, not transition history, attachments, etc.. Even comments require a special workaround. 3. Third-Party scripts for Trac – Sparta is not Trac, so this is not helpful. Page 2 of 11 ADTRAN MEMORANDUM CTB-2009-02 4. Jelly Script – This was Atlassian's recommended method, since Adtran used a custom system, and since transition history was required. 5. RPC services – Offers SOAP and XML-RPC manipulation of Jira. 6. “Your own method” – Direct manipulation of the database is discouraged and not remotely supported. Options #1 and #3 were immediately dismissed, since Sparta is not one of the supported source databases. Given Adtran's requirements for full data migration (no data loss for any migrated issue), option #2 was quickly ruled out too. Option #6 was the first thought; however, it was also abandoned at first, because it was strongly discouraged by Atlassian and forum members. The next option, #4, was a “front door” approach, Jelly scripts. This method was used as the first real attempt to migrate Sparta data. DEAD END: JELLY SCRIPT Jelly is Apache's XML based scripting “language”, where each XML tag is bound to a Java object or method. Jelly's XML attributes relate to method arguments, and tags can be nested, simulating argument inheritance or dependency. When Jira's Jelly runner is enabled, Jelly scripts can be fed into a running Jira service to automate data entry. Although well-documented: http://www.atlassian.com/software/jira/docs/latest/jelly.html Jira's Jelly implementation leaves much to be desired, which is not apparent until after much experience: 1. Parsing errors are reported merely as a parsing error. No line numbers or offender information is provided. Debug reduces to a brute-force, binary-search, trial-and-error approach, iteratively testing and reducing the input vector until the error is isolated. This is trivial for a handful of lines, but several of the Jelly scripts used to load Sparta data were over a million lines long! 2. Various symbols must be escaped by transforming them into HTML symbols. For example, an apostrophe (') cannot be merely escaped by a backslash, rather, it must be transformed into “'”. This is not difficult, but the necessary mappings are not documented and must be discovered through trial-and-error and a priori knowledge of HTML markup and XML. 3. Jelly scripts are executed as interpreted. Therefore, any interuption leaves Jira in an indeterminate state, forcing complete reload of the original database and re-execution of the corrected entire Jelly script. 4. Jelly execution is slow, very slow. Final migration of the Sparta data using Jelly scripts required over 24 hours, even though all data was local. There were no network or VPN dependencies. 5. Jelly execution consumes a lot of memory. Over 6 GB of RAM was required and allocated to Tomcat's JVM to execute a single 260 MB Jelly script. 6. Jira's Jelly implementation is incomplete. Many functions required manipulation of the SQL Page 3 of 11 ADTRAN MEMORANDUM CTB-2009-02 database during Jelly execution to adjust timestamps, issue numbers, and user information, which the Jelly tag failed to request and store. 7. Jira's Jelly implementation is horribly broke! The workflow transition tag not only failed to update the timestamps correctly, it also failed to leave any trace in the workflow history log, requiring excessing SQL post-processing to rectify, which yielded the entire process practically useless. Although an interesting concept, the Jelly script approach proved to be a dead end, because of performance and capability issues. Several Perl programs were developed to read the Sparta database directly from the server, srv-sparta, and write Jelly scripts to local disk, which could be used to import the Sparta data into Jira. These scripts are available for reference here, executed in this order: [email protected]:/home/tbowen/bin/sync_sparta_users.pl [email protected]:/home/tbowen/bin/sync_sparta_issues.pl [email protected]:/home/tbowen/bin/sync_sparta_history.pl [email protected]:/home/tbowen/bin/sync_sparta_attachments.pl Later, these scripts were combined into a single Perl program, although this effort was not finalized: [email protected]:/home/tbowen/bin/sync_sparta_all.pl Ultimately, these programs were abandoned, because direct SQL manipulation was increasingly added to the Jelly scripts to compensate for incomplete or broken Jelly tags. Eventually, it became more practical to transport the entire database via SQL statements, transforming the data as necessary using an intermediate Perl program. Because of the time wasted and trust lost investing in Atlassian's Jelly implementation, which was recommended before the RPC approach, the RPC services approach was never seriously investigated. DIRECT SQL MIGRATION VIA CUSTOM PERL PROGRAM Although unsupported and discouraged by Atlassian, the Sparta database was migrated by directly querying the Sparta database on srv-sparta, locally transforming the data, and directly writing to a local development server via SQL statements. The Perl programming language was initially designed for parsing and transforming large amounts of data, and Perl offers powerful modules for interfacing with various databases; therefore, Perl was chosen to develop the programmable step, #3, in the following procedure for migrating Sparta to Jira: 1. Prepare new Jira project via Jira's web GUI. 2. Convert Jira database to UTF-8 encoding. 3. Read, transform, and import Sparta data into development server. 4. Transport database from development to production server. These fundamental steps are expanded below. Page 4 of 11 ADTRAN MEMORANDUM CTB-2009-02 1) PREPARE JIRA PROJECT A new Jira project was created to house all of the issues ported from Sparta into Jira. The project was designed to accommodate read-only access, so users could search, read, and link against the full Sparta database, after it was migrated to Jira. Although similar states, resolutions, fields and other issue data types existed in the Jira system, several new data types were created, so issue data would match as closely as possible between Sparta and Jira.
Recommended publications
  • Learning to Program in Perl
    Learning to Program in Perl by Graham J Ellis Languages of the Web Learning to Program in Perl version 1.7 Written by Graham Ellis [email protected] Design by Lisa Ellis Well House Consultants, Ltd. 404, The Spa, Melksham, Wiltshire SN12 6QL England +44 (0) 1225 708 225 (phone) +44 (0) 1225 707 126 (fax) Find us on the World Wide Web at: http://www.wellho.net Or contact us at: [email protected] Copyright © 2003 by Well House Consultants, Ltd. Printed in Great Britain. Printing History May 1999 1.0 First Edition February 2000 1.1 Minor additions June 2000 1.2 Compliation of modules October 2000 1.3 Name change, revisions April 2002 1.4 Added modules September 2002 1.5 Added modules January 2003 1.6 Updated modules February 2003 1.7 Updated modules This manual was printed on 21 May 2003. Notice of Rights All rights reserved. No part of this manual, including interior design, may be reproduced or translated into any language in any form, or transmitted in any form or by any means electronic, mechanical, photocopying, recording or otherwise, without prior written permission of Well House Consultants except in the case of brief quotations embodied in critical articles and reviews. For more information on getting permission for reprints and excerpts, contact Graham Ellis at Well House Consultants. This manual is subject to the condition that it shall not, by way of trade or otherwise, be lent, sold, hired out or otherwise circulated without the publisher's prior consent, incomplete nor in any form of binding or cover other than in which it is published and without a similar condition including this condition being imposed on the subsequent receiver.
    [Show full text]
  • How to Secure Your Web Site Picked up SQL Injection and Cross-Site Scripting As Sample Cases of Failure Because These Two Are the Two Most Reported Vulnerabilities
    How to Secure your Website rd 3 Edition Approaches to Improve Web Application and Web Site Security June 2008 IT SECURITY CENTER (ISEC) INFORMATION-TECHNOLOGY PROMOTION AGENCY, JAPAN This document is a translation of the original Japanese edition. Please be advises that most of the references referred in this book are offered in Japanese only. Both English and Japanese edition are available for download at: http://www.ipa.go.jp/security/english/third.html (English web page) http://www.ipa.go.jp/security/vuln/websecurity.html (Japanese web page) Translated by Hiroko Okashita (IPA), June 11 2008 Contents Contents ......................................................................................................................................... 1 Preface ........................................................................................................................................... 2 Organization of This Book ........................................................................................................... 3 Intended Reader ......................................................................................................................... 3 Fixing Vulnerabilities – Fundamental Solution and Mitigation Measure - .................................... 3 1. Web Application Security Implementation ............................................................................... 5 1.1 SQL Injection .................................................................................................................... 6 1.2
    [Show full text]
  • Red Hat Enterprise Linux 8 Installing, Managing, and Removing User-Space Components
    Red Hat Enterprise Linux 8 Installing, managing, and removing user-space components An introduction to AppStream and BaseOS in Red Hat Enterprise Linux 8 Last Updated: 2021-06-25 Red Hat Enterprise Linux 8 Installing, managing, and removing user-space components An introduction to AppStream and BaseOS in Red Hat Enterprise Linux 8 Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. 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]
  • Perl DBI API Reference
    H Perl DBI API Reference This appendix describes the Perl DBI application programming interface. The API consists of a set of methods and attributes for communicating with database servers and accessing databases from Perl scripts. The appendix also describes MySQL-specific extensions to DBI provided by DBD::mysql, the MySQL database driver. I assume here a minimum version of DBI 1.50, although most of the material applies to earlier versions as well. DBI 1.50 requires at least Perl 5.6.0 (with 5.6.1 preferred). As of DBI 1.611, the minimum Perl version is 5.8.1. I also assume a minimum version of DBD::mysql 4.00. To determine your versions of DBI and DBD::mysql (assuming that they are installed), run this program: #!/usr/bin/perl # dbi-version.pl - display DBI and DBD::mysql versions use DBI; print "DBI::VERSION: $DBI::VERSION\n"; use DBD::mysql; print "DBD::mysql::VERSION: $DBD::mysql::VERSION\n"; If you need to install the DBI software, see Appendix A , “Software Required to Use This Book.” Some DBI methods and attributes are not discussed here, either because they do not apply to MySQL or because they are experimental methods that may change as they are developed or may even be dropped. Some MySQL-specific DBD methods are not discussed because they are obsolete. For more information about new or obsolete methods, see the DBI or DBD::mysql documentation, available at http://dbi.perl.org or by running the following commands: % perldoc DBI % perldoc DBI::FAQ % perldoc DBD::mysql The examples in this appendix are only brief code fragments.
    [Show full text]
  • Perl Variables Scalar ($) Array (@) Hash (%)
    Practical Extraction and Report Language « Perl is a language of getting your job done » « There is more than one way to do it » Larry Wall VI, October 2006 Page 1 Perl Outline : History Structure of a simple Perl script Perl variables scalar ($) array (@) hash (%) Operators (numeric, string & logical) Statement modifiers (if/elsif/else, for/foreach, while) VI, October 2006 Page 2 Practical Extraction and Report Language http://perl.oreilly.com " Perl is both a programming language and an application on your computer that runs those programs " VI, October 2006 Page 3 Perl history A few dates: 1969 UNIX was born at Bell Labs. 1970 Brian Kernighan suggested the name "Unix" and the operating system we know today was born. 1972 The programming language C is born at the Bell Labs (C is one of Perl's ancestors). 1973 “grep” is introduced by Ken Thompson as an external utility: Global REgular expression Print. 1976 Steven Jobs and Steven Wozniak found Apple Computer (1 April). 1977 The computer language awk is designed by Alfred V. Aho, Peter J. Weinberger, and Brian W. Kernighan (awk is one of Perl's ancestors). VI, October 2006 Page 4 Perl history 1987 Perl 1.000 is unleashed upon the world NAME perl | Practical Extraction and Report Language SYNOPSIS perl [options] filename args DESCRIPTION Perl is a interpreted language optimized for scanning arbitrary text files, extracting information from those text files, and printing reports based on that information. It's also a good language for many system management tasks. The language is intended to be practical (easy to use, efficient, complete) rather than beautiful (tiny, elegant, minimal).
    [Show full text]
  • OTRS Developer Manual Release 8.0
    OTRS Developer Manual Release 8.0 OTRS AG Jul 08, 2020 Contents 1 Getting Started 3 1.1 Development Environment ..................................... 3 1.1.1 Obtain the Source Code .................................. 3 1.1.2 Useful Tools ......................................... 3 1.1.3 Linking Expansion Modules ................................ 4 1.2 Architecture Overview ........................................ 4 1.2.1 Directories .......................................... 7 1.2.2 Files ............................................. 7 1.2.3 Core Modules ........................................ 7 1.2.4 Front End Handle ...................................... 8 1.2.5 Front End Modules ..................................... 8 1.2.6 CMD Front End ....................................... 8 1.2.7 Generic Interface Modules ................................. 8 1.2.8 Scheduler Task Handler Modules ............................. 9 1.2.9 Database .......................................... 10 2 OTRS Internals - How it Works 11 2.1 Config Mechanism .......................................... 11 2.1.1 Defaults.pm: OTRS Default Configuration ...................... 11 2.1.2 Automatically Generated Configuration Files ....................... 11 2.1.3 XML Configuration Files .................................. 11 2.1.4 Accessing Config Options at Runtime .......................... 20 2.2 Database Mechanism ........................................ 21 2.2.1 SQL ............................................. 21 2.2.2 XML ............................................
    [Show full text]
  • The Perl Review
    The Perl Review Volume 0 Issue 6 November 1, 2002 Like this issue? Support The Perl Review with a donation! http://www.ThePerlReview.com/ Letters i Community News ii Short Notes iii Simple RSS with Perl 1 brian d foy Delightful Languages: Ruby 7 Mike Stok Who’s Doing What? Analyzing Ethernet LAN Traffic 18 Paul Barry Book Reviews 24 Staff Like this issue? Support The Perl Review with a donation! http://www.ThePerlReview.com/ Web Access http://www.ThePerlReview.com/ Email [email protected] Publisher brian d foy Editor Andy Lester Technical Editors Kurt Starsinic, Adam Turoff Copy Editors Beth Linker, Glenn Maciag, Chris Nandor Contributors David H. Adler, Paul Barry, Neil Bauman, brian d foy, Andy Lester, Mike Stok, Betsy Waliszewski The Perl Review print $_ $_[0] for @$self;. We incorrectly used Letters $_[1] and apologize for the confusion. Send your letters, comments, and suggestions to [email protected] Write for TPR TPR Subscriptions Have something to say about Perl? The Perl Re- view wants first person accounts about using Perl. If I’d like to subscribe to The Perl Review. However, you cannot write a complete article you can write a I prefer not to use PayPal. If you tell me where to “Short Note”. Want to tell everyone about a book send a check or cash, I’d be happy to do so. you have read? Write a book review! Were you at a Perl function? Give us a trip report! – Gregor Dodson We would like to get articles or “Short Notes” on brian writes: A lot of people have said something similar, and at the moment we do not have a better way to take money.
    [Show full text]
  • Tiketöintijärjestelmän Käyttöönotto
    TIKETÖINTIJÄRJESTELMÄN KÄYTTÖÖNOTTO LAHDEN AMMATTIKORKEAKOULU Tekniikan ala Tietotekniikka Tietoliikennetekniikka Opinnäytetyö Kevät 2013 Janne Nummela Lahden ammattikorkeakoulu Tietotekniikan koulutusohjelma NUMMELA, JANNE: Tiketöintijärjestelmän käyttöönotto Tietoliikennetekniikan opinnäytetyö, 41 sivua Kevät 2013 TIIVISTELMÄ Tämän opinnäytetyön tavoitteena oli kartoittaa, valita ja asentaa avoimeen lähdekoodiin perustuva palvelupyyntöjen kirjausjärjestelmä eli tiketöintipalvelu. Tämän lisäksi työssä alustettiin ITIL-viitekehyksen käyttöönottoa yrityksessä. Työn toimeksiantajana oli LahtiNetwork Oy, joka on lahtelainen ict-palveluja tarjoava yritys. Työssä pyrittiin ottamaan huomioon LahtiNetworkin tarpeet ohjelmiston suhteen. Aikaisemmin yrityksen käytössä ei ollut tiketöintijärjestelmää, joten tulleita palvelupyyntöjä ei kirjattu järjestelmällisesti. Tiketöintijärjestelmä mahdollistaa palvelupyyntöjen järjestelmällisen kirjaamisen ja hallinnan. Tiketöintijärjestelmä tarjoaa palvelupyyntöjen vastaanotto-, kirjaus-, hallinta- ja muokkauspalvelut. Tiketöintijärjestelmä koostuu palvelimesta ja siihen asennettavasta ohjelmistosta. Ohjelmistot jakautuvat ilmaisiin avoimen lähdekoodin ohjelmiin ja maksullisiin ohjelmistoihin. Ohjelmia löytyy markkinoilta lukuisia aina pienestä pelkästään tiketöintiin perustuvasta ohjelmasta isoon koko help desk -prosessin käsittävään ohjelmaan. Yhteistä kaikilla ohjelmilla on kuitenkin se, että ydinajatus on tallentaa ja seurata järjestelmään tullutta palvelupyyntöä. Palvelupyyntö voi olla virheilmoitus,
    [Show full text]
  • The Bugzilla Guide
    The Bugzilla Guide Matthew P. Barnson [email protected] This is the documentation for Bugzilla, the Mozilla bug−tracking system. The Bugzilla Guide Table of Contents Chapter 1. About This Guide.............................................................................................................................1 1.1. Purpose and Scope of this Guide......................................................................................................1 1.2. Copyright Information......................................................................................................................1 1.3. Disclaimer.........................................................................................................................................2 1.4. New Versions....................................................................................................................................2 1.5. Credits...............................................................................................................................................2 1.6. Contributors......................................................................................................................................3 1.7. Feedback...........................................................................................................................................3 1.8. Translations.......................................................................................................................................3 1.9. Document Conventions.....................................................................................................................3
    [Show full text]
  • Perl Baseless Myths & Startling Realities
    http://xkcd.com/224/ Perl Baseless Myths & Startling Realities by Tim Bunce, July 2008 Prefer ‘Good Developers’ over ‘Good Languages’ “For all program aspects investigated, the performance variability that derives from differences among programmers of the same language—as described by the bad-to-good ratios—is on average as large or larger than the variability found among the different languages.” — An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl. IEEE Computer Journal October 2000 Who am I? - Tim Bunce - Author of the Perl DBI module - Using Perl since 1991 - Involved in the development of Perl 5 - “Pumpkin” for 5.4.x maintenance releases - http://blog.timbunce.org ~ Myths ~ ~ Myths ~ - Perl is dead - Perl is hard to read / test / maintain - Perl 6 is killing Perl 5 ~ Myths ~ - Perl is dead - Perl is hard to read / test / maintain - Perl 6 is killing Perl 5 Perl 5 - Perl 5 isn’t the new kid on the block - Perl is 21 years old - Perl 5 is 14 years old - A mature language with a mature culture Buzz != Jobs - Perl5 hasn’t been generating buzz recently - It’s just getting on with the job - Lots of jobs - - just not all in web development Guess the Languages “web developer” Yes, Perl is growing more slowly than others but these are just “web developer” jobs “software engineer” Perl is mentioned in many more software engineer/developer jobs. “foo developer” Perl is the primary focus of more developer jobs. Want a fun new job? Become a Perl developer! Massive Module Market - Large and vibrant developer community - Over 15,000 distributions (58,000 modules) - Over 6,700 ‘authors’ (who make releases) - One quarter of all CPAN distributions have been updated in the last 4 months! - Half of all updated in the last 17 months! Top Modules -Many gems, including..
    [Show full text]
  • Learning Perl. 5Th Edition [PDF]
    Learning Perl ,perlroadmap.24755 Page ii Tuesday, June 17, 2008 8:15 AM Other Perl resources from O’Reilly Related titles Advanced Perl Programming Perl Debugger Pocket Intermediate Perl Reference Mastering Perl Perl in a Nutshell Perl 6 and Parrot Essentials Perl Testing: A Developer’s Perl Best Practices Notebook Perl Cookbook Practical mod-perl Perl Books perl.oreilly.com is a complete catalog of O’Reilly’s books on Perl Resource Center and related technologies, including sample chapters and code examples. Perl.com is the central web site for the Perl community. It is the perfect starting place for finding out everything there is to know about Perl. Conferences O’Reilly brings diverse innovators together to nurture the ideas that spark revolutionary industries. We specialize in document- ing the latest tools and systems, translating the innovator’s knowledge into useful skills for those in the trenches. Visit conferences.oreilly.com for our upcoming events. Safari Bookshelf (safari.oreilly.com) is the premier online refer- ence library for programmers and ITprofessionals. Conduct searches across more than 1,000 books. Subscribers can zero in on answers to time-critical questions in a matter of seconds. Read the books on your Bookshelf from cover to cover or sim- ply flip to the page you need. Try it today with a free trial. main.title Page iii Monday, May 19, 2008 11:21 AM FIFTH EDITION LearningTomcat Perl™ The Definitive Guide Randal L. Schwartz,Jason Tom Brittain Phoenix, and and Ian brian F. Darwin d foy Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo Learning Perl, Fifth Edition by Randal L.
    [Show full text]
  • Documentation OTRS 5
    Documentation OTRS 5 - Developer Manual Build Date: 2015-05-12 OTRS 5 - Developer Manual Copyright © 2003-2015 OTRS AG This work is copyrighted by OTRS AG. You may copy it in whole or in part as long as the copies retain this copyright statement. The source code of this document can be found at github, in the repository doc-developer. Contributions are more than welcome. You can also help translating it to your language at Transifex. UNIX is a registered trademark of X/Open Company Limited. Linux is a registered trademark of Linus Torvalds. MS- DOS, Windows, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows 2003, Windows Vista and Windows 7 are registered trademarks of Microsoft Corporation. Other trademarks and registered trademarks are: SUSE and YaST of SUSE Linux GmbH, Red Hat and Fedora are registered trademarks of Red Hat, Inc. Mandrake is a registered trademark of MandrakeSoft, SA. Debian is a registered trademark of Software in the Public Interest, Inc. MySQL and the MySQL Logo are registered trademarks of Oracle Corporation and/or its affiliates. All trade names are used without the guarantee for their free use and are possibly registered trade marks. OTRS AG essentially follows the notations of the manufacturers. Other products mentioned in this manual may be trademarks of the respective manufacturer. Table of Contents 1. Getting Started .......................................................................................................... 1 1. Development Environment ................................................................................
    [Show full text]