Erlware For Managing Distribution and Build Erlang User Conference 2007.

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
1 G2 and ActiveSheets Paul Roe QUT Yes Australia!
Programming with Android: SDK install and initial setup Luca Bedogni Marco Di Felice Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna.
Calendar Browser is a groupware used for booking all kinds of resources within an organization. Calendar Browser is installed on a file server and in a.
Programming Introduction November 9 Unit 7. What is Programming? Besides being a huge industry? Programming is the process used to write computer programs.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Build a CMS Website. The topics this chapter covers are: What is CMS ? What you can do with CMS The benefits and disadvantages of using a content management.
Julie McEnery1 Installing the ScienceTools The release manager automatically compiles each release of the Science Tools, it creates a set of wrapper scripts.
#RefreshCache CI - Daily Builds w/Jenkins – an Open Source Continuous Integration Server Nick Airdo Community Developer Advocate Central Christian Church.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
Microsoft ® Official Course Module 9 Configuring Applications.
Linux Operations and Administration
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
The aim We had to “build” a laptop from scratch. We needed to install the software and the Operating system needed. We came across all sorts of problems.
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
Internet-based Discussions using Zope, CMF, and Swishdot.
#RefreshCache Redmine Learn why RefreshCache is the community developer's new best friend. Daniel Hazelbaker Information Technology Director.
Working Out with KURL! Shayne Koestler Kinetic Data.
Basic Programming in Ruby Today’s Topics: Introduction last class irb history log Methods Classes (briefly) Using 3 rd Party Libraries rubygems ‘ require.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
How KeePass password safe can save you time and energy
Business Unit or Product Name © 2007 IBM Corporation Introduction of Autotest Qing Lin.
Software Engineering in Robotics Packaging and Deployment of Systems Henrik I. Christensen –
11 MANAGING AND DISTRIBUTING SOFTWARE BY USING GROUP POLICY Chapter 5.
1 Thomas Lippert Senior Product Manager - Mobile What’s new in SMC 5.0.
INFSOM-RI Juelich, 10 June 2008 ETICS - Maven From competition, to collaboration.
JAVA SERVER PAGES. 2 SERVLETS The purpose of a servlet is to create a Web page in response to a client request Servlets are written in Java, with a little.
Ant Build Tools.  Creating a product from source may take several steps: Compile Link Copy files to various directories Remove intermediate files Generate.
(1) A Beginner’s Quick Start to SIMICS. (2) Disclaimer This is a quick start document to help users get set up quickly Does not replace the user guide.
1 Instant Data Warehouse Utilities Extended (Again!!) 14/7/ Today I am pleased to announce the publishing of some fantastic new functionality for.
1 Chapter Overview Publishing Resources in Active Directory Service Redirecting Folders Using Group Policies Deploying Applications Using Group Policies.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
A powerful network monitoring system
CGI Common Gateway Interface. CGI is the scheme to interface other programs to the Web Server.
1 / 22 AliRoot and AliEn Build Integration and Testing System.
Ant & Jar Ant – Java-based build tool Jar – pkzip archive, that contains metadata (a manifest file) that the JRE understands.
Copyright © 2006, Zend Technologies Inc. John’s Top PECL Picks John Coggeshall.
Dean Anderson Polk County, Oregon GIS in Action 2014 Modifying Open Source Software (A Case Study)
Reading Flash. Training target: Read the following reading materials and use the reading skills mentioned in the passages above. You may also choose some.
Chapter 1 Introducing Ant. What is ant? Ant is a build tool  Automate the tasks of compiling code, running test, and packaging the results for redistribution.
TOPIC 7.0 LINUX SERVICES AND CONFIGURATION. ROOT USER Root user is called “super user” because it has power far beyond those of mortal user. As root,
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
DEVOLOPING ANDROID APP ON LOCATION BASED REMINDER ON ANDROID MOBILE SYSTEMS.
Automatic testing: 1 Ericsson AB, UKH/K What’s new in Erlang/OTP R9C This presentation will highlight some of the new and changed functions in the latest.
Content Management Systems. Agenda Week overview Web-page basics The why and what of CMS Typo3.
XAMPP.
REST API Design. Application API API = Application Programming Interface APIs expose functionality of an application or service that exists independently.
Guide To Develop Mobile Apps With Titanium. Agenda Overview Installation of Platform SDKs Pros of Appcelerator Titanium Cons of Appcelerator Titanium.
Node.js Modules Header Mastering Node.js, Part 2 Eric W. Greene
Distributed Control and Measurement via the Internet
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Development Environment
Build Automation with Gradle
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Data Virtualization Tutorial: Introduction to SQL Script
And Why You Should Use It In You Websites
GLAST Release Manager Automated code compilation via the Release Manager Navid Golpayegani, GSFC/SSAI Overview The Release Manager is a program responsible.
Web Applications Security What are web Applications?
Enhancing Cloud Foundry with CLI Plugins
X in [Integration, Delivery, Deployment]
Zlatko Stamatov JavaSkop 13 December 2015
All About Gump Presentation
Git CS Fall 2018.
Carthage ios 8 onwards Dependency manager that streamlines the process of integrating the libraries into the project.
Web Application Development Using PHP
Presentation transcript:

Erlware For Managing Distribution and Build Erlang User Conference 2007

Erlware Goals Allow the Erlang Community to drive itself Allow the community to evolve the language/platform Make the language/platform accessible to reasonably competent programmers

Steps to Reach Erlware's Goals Define a Common Repository for OTP Artifacts Make it easy for anyone to host their own version of the Repository Build tools that leverage the features of the Repository

Repository Design Goals Be Lazy Don't add more meta data then you need Where ever possible leverage existing OTP metadata

Repository and OTP OTP already provides most of the metadata that we need. OTP Applications make good artifacts. OTP *.app files make for good metadata. OTP *.boot, *.script, *.rel files make really good release packages.

Anatomy of a package Contains a src directory Contains an ebin directory Contains a *.app file Contains source code Application Release Contains an *.rel file Contains a sys.config file Contains command templates

Repository Implementation Dirt Simple Http Server with WEBDAV Enabled Specific, well documented directory structure

Repository Layout The structure of the repo is / / / / / and /Meta/ / / Example: The Sinan release package for mac sits in: i386-apple-darwin8.9/releases/sinan/

Leveraging the Repository Sinan is a build system that 'understands' erlang and OTP. It makes it very easy to handle complex OTP build logic Faxien is a distribution system built on the same backend as Sinan. It provides functionality similar to rubygems or CPAN for Erlang.

OTP Centric Build System Expects OTP Applications, Understands OTP Applications Written and extensible in Erlang

Getting Started Generate an OTP Project sinan gen After asking a few questions generates a useful, sinan compliant, compilable OTP application with a complete skeleton

Dependency Detection Just run sinan depends Evaluates the OTP application dependencies and restrictions in the project. Hits the repository to gather information. Comes back with a list of hard dependencies (app, version) for each of the dependencies and transitive dependencies in the project. Many other tasks in Sinan depend on this one.

Building Just run sinan or sinan build Builds all of your artifacts into the _build directory. Will only rebuild when a file needs to be rebuilt. Understands includes, parse transforms etc.

Testing We decided to leverage eunit in Sinan. Want to run all of the eunit tests in your project. sinan test Sinan prints successes and failures to the shell. It also generates html code coverage reports to _build/reports.

The Good Stuff - Releases Want to generate *.rel, *.boot, *.script files for your project? How about taring it up and getting it ready for a push to an Erlang node? Just do sinan release or sinan tar Best of all, Faxien knows how to push these releases out to a repository. That makes distribution a no brainer.

Extra's How about running dialyzer on your project? sinan analyze The first time its run it generates a plt file for dependencies so you only get the output relevant for your project. Want an erlang shell with all of your paths set so you can noodle with your project? sinan shell

The Future Anything you want. Sinan is an extensible system so anything useful can be quickly incorporated. Of course, there is still a lot of functionality we want to expose in Sinan. No doubt the community will come up with a bunch of things that we have never thought of.

Easy to find and install otp packages –list out packages available in remote repositories –simply type ‘faxien install ’ to install anyone of them –Install applications and releases Easy to publish OTP packages so that community can access them –faxien publish –auto discovers package type, app, release, or erts

Install the tools (links also found at Execute faxien_launcher -b to install faxien now install Sinan with ‘faxien install sinan’

Installation The past - Google for an application that fits your needs Find lots of stuff written in perl but no Erlang Some obscure website listed on the 13th page has a half baked Erlang app Hack around with it for a bit Give up and write your own With Faxien - faxien list pick an app faxien install_app [vsn] faxien install [vsn]

How does installation work? Configured to know about a list of repositories Pulls down packages both releases and applications then installs the now local tars creating scripts and boot files the fit the local environment among other things. Pulls down erts (you need not install Erlang from source anymore) If a package is not found for the erts vsn you specify Faxien automatically selects the next lowest compatible erts vsn. By default all packages are installed in /usr/local/erlware or on windows c:\erlware though this is fully configurable. (windows code not complete as of this writing)

Publishing The past - build it write some convoluted make file that would break for the next guy, put it up on your website and hope people find it Be disappointed when no one does and watch the community grow slowly without your code With faxien "faxien publish my_app" "faxien publish my_rel" Now everyone can get at it

How does publishing work? Faxien publishes precompiled applications Publishes into a repo location specific to the local architecture, if project is pure Erlang then publishes to a platform neutral location Auto discovers the package type by looking for things like a.app file or a.rel file, or the fact the the directory looks something like "erts- ". –faxien publish sasl works –faxien publish my_release works –faxien publish erts works if a package does not have the appropriate OTP structure it will not be published.

Extra Commands Faxien allows you to do quite a bit more than this short presentation has time to address. Two commands I want to note are: faxien list - list all available apps that match the supplied pattern across many repos faxien upgrade - upgrade one or all packages on the local file system to their latest vsn And of course lets not forget… faxien help – to print out a list of what faxien can do

Summing it up. (Erlware cycle) 1.Install Faxien (Erlang Package Management) 2.Install Sinan (Erlang Build System) 3.Use Sinan projgen to create a project 4.Build, document, and test with Sinan 5.Publish an app or release with Faxien 6.Other folks download and use your package

Erlware Goals Revisited Allow the Erlang Community to drive itself –Create otp packages with Sinan then publish and install them with Faxien. Now we can easily leverage each others work. Allow the community to evolve the language/platform –No need to install Erlang from source, you can create your own release and people can simply install that – if you want to bundle your alternative to stdlib instead of the original go ahead Make the language/platform accessible to reasonably competent programmers –OTP apps and releases are easy to install, create, and publish with Faxien and Sinan.

Get Involved with Erlware We are a community project. We want your help, we will not succeed without it!!