76
Julien Ponge Free Open Source Software Academia Conference November 17th & 18th 2009

Iz Pack

  • Upload
    inria

  • View
    980

  • Download
    1

Embed Size (px)

DESCRIPTION

Pack is a one-stop solution for packaging, distributing and deploying applications. It is able to generate cross platform, Java-based installers that both encompass and embrace the target operating systems heterogeneity (Windows, Mac OS X, Linux, *BSD, Solaris). IzPack is by no mean rigid and lets you compose your installers the way you want through a wide range of existing features and extension points.This talk will outline: the IzPack features, its use-cases and positioning against other deployment solutions, the history of the project, from a fun hack made in a student dorm-room to an industry-backed international project thoughts on building a project community, licensing matters, sustaining/scaling a project in the long term and business-model considerations.

Citation preview

Page 1: Iz Pack

Julien Ponge

Free Open Source Software Academia Conference

November 17th & 18th 2009

Page 2: Iz Pack

Associate ProfessorTelecommunications, services and usages dept.

CITI / AmazonesDynamic systems

Formal systemsObservation

Security

EmbeddedPervasiveAmbientMobile

Page 3: Iz Pack

From a hack made in a student dorm room...

... not mine!

Page 4: Iz Pack

...to an industry-backed project.

Page 5: Iz Pack

Intro + Demo1

Some features2

Positioning3

Thoughts on F/OSS4

Page 6: Iz Pack

Intro + Demo1

Some features2

Positioning3

Thoughts on F/OSS4

Page 7: Iz Pack
Page 8: Iz Pack

Unique installer

Page 9: Iz Pack

Unique installer Multiple systems

Page 10: Iz Pack

Download for your operating system

1: java -Xmx256m -jar filename.jar2: chmod -R +x lib/ant/bin3: lib/ant/bin/ant -f setup.xml4: bin/asadmin start-domain domain

v2

Page 11: Iz Pack

Demo

One download

Works everywhere

Straightforward

Page 12: Iz Pack
Page 13: Iz Pack
Page 14: Iz Pack

~25.000 downloads per month

Page 15: Iz Pack

(...)

Page 16: Iz Pack

JavaOne 2008GrantInvited talks

Code contributions

Software licenses

Page 17: Iz Pack

Some features2

Intro + Demo1

Positioning3

Thoughts on F/OSS4

Page 18: Iz Pack

Some features2

Intro + Demo1

Positioning3

Thoughts on F/OSS4

Page 19: Iz Pack
Page 20: Iz Pack

Compiler

Installer JAR

Descriptor ResourcesFiles

Packs, conditions, langpacks,libraries, GUI, metadata, ...

Page 21: Iz Pack

Compiler

Installer JAR

Page 22: Iz Pack

Compiler

Installer JAR

Page 23: Iz Pack

Compiler

Installer JAR

Page 24: Iz Pack

Compiler

Installer JAR

Page 25: Iz Pack

<installation version="1.0">

<info> <appname>Glassfish</appname> <appversion>v2 ur2 b04</appversion> <authors> <author email="" name="Julien Ponge (packager)"/> <author email="" name="Sun Microsystems and the GlassFish community"/> </authors> <url>http://glassfish.org/</url> <javaversion>1.5</javaversion> <requiresjdk>yes</requiresjdk> </info>

(...)

Page 26: Iz Pack

<panels> <panel classname="HTMLInfoPanel" /> <panel classname="HTMLLicencePanel" /> <panel classname="TargetPanel" /> <panel classname="UserInputPanel" /> <panel classname="InstallPanel" /> <panel classname="ProcessPanel" /> <panel classname="ShortcutPanel" /> <panel classname="SimpleFinishPanel" /></panels>

(...)

(...)

Page 27: Iz Pack

<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /></pack>

Page 28: Iz Pack

<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /></pack>

Page 29: Iz Pack

<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /></pack>

Ant-style:**/*dir/*.class**/*.jarlib/**/*.jar

Page 30: Iz Pack

<pack name="GlassFish" required="yes"> <description>GlassFish</description> <file src="launch-browser.sh" targetdir="$INSTALL_PATH/bin" condition="izpack.macinstall" /> <fileset dir="linux" targetdir="$INSTALL_PATH" condition="izpack.linuxinstall"> <% linux_specific.each do |file| %> <include name="<%= file %>"/> <% end %> </fileset> <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" stage="never" os="unix" /> <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" os="unix" /></pack>

Page 31: Iz Pack

<conditions> <condition type="variable" id="start.glassfish"> <name>gf_start_domain</name> <value>true</value> </condition></conditions>

Page 32: Iz Pack

<guiprefs height="600" resizable="yes" width="800"> <modifier key="allXGap" value="5"/> <modifier key="allYGap" value="5"/> <modifier key="paragraphYGap" value="15"/> <modifier key="useHeadingPanel" value="yes"/> <modifier key="headingLineCount" value="1"/> <modifier key="headingFontSize" value="2"/> <modifier key="headingBackgroundColor" value="0x00ffffff"/> <modifier key="headingPanelCounter" value="text"/> <modifier key="headingPanelCounterPos" value="inHeading"/></guiprefs>

Page 33: Iz Pack
Page 34: Iz Pack
Page 35: Iz Pack
Page 36: Iz Pack

variables

Content-awarereplacement

Config files,scripts, ...

Page 37: Iz Pack
Page 38: Iz Pack

deflate (gzip) bzip2

raw pack200

Page 39: Iz Pack

Installer JARCustom panels

Custom actions

3rd-party libs

Page 40: Iz Pack

Installer JARCustom panels

Custom actions

3rd-party libs

Page 41: Iz Pack

Our very own native launcher, or...

.exe

Page 42: Iz Pack
Page 43: Iz Pack

Positioning3

Intro + Demo1

Some features2

Thoughts on F/OSS4

Page 44: Iz Pack

Positioning3

Intro + Demo1

Some features2

Thoughts on F/OSS4

Page 45: Iz Pack

BitRock InstallBuilderMacOSX packages

Page 46: Iz Pack

IzPack is the onlytrue cross-platform

installer to date

Page 47: Iz Pack

(...)

Page 48: Iz Pack

(...)IzPack is a

complement

Page 49: Iz Pack
Page 50: Iz Pack
Page 51: Iz Pack
Page 52: Iz Pack
Page 53: Iz Pack

Intro + Demo1

Some features2

Positioning3

Thoughts on F/OSS4

Page 54: Iz Pack

Intro + Demo1

Some features2

Positioning3

Thoughts on F/OSS4

Page 55: Iz Pack

08

v2.0(rewrite)

03

v1.0

200111

v2.10.0CVS @TuxFamilyFast development

200208

v3.0.0Win32 shortcutsUserInputPanel

200402

Move toBerliOS

200501

X11shortcuts

05

GPL

200804

Move toCodehaus

05

CommunityOneJavaOne

Steady growth, people keep on joining

200904

v4.3.0

11

v4.3.2,fOSSa

Page 56: Iz Pack

08

v2.0(rewrite)

03

v1.0

200111

v2.10.0CVS @TuxFamilyFast development

200208

v3.0.0Win32 shortcutsUserInputPanel

200402

Move toBerliOS

200501

X11shortcuts

05

GPL

200804

Move toCodehaus

05

CommunityOneJavaOne

You decideto use it for

your next projects

Steady growth, people keep on joining

200904

v4.3.0

11

v4.3.2,fOSSa

Page 57: Iz Pack

Facts

Page 58: Iz Pack

Facts

I did not expect any success.

Page 59: Iz Pack

Facts

I did not expect any success.

You are always the last to know about usages.

Page 60: Iz Pack

Facts

I did not expect any success.

You are always the last to know about usages.

Community does not appear magically.

Page 61: Iz Pack

F/OSS... why?nothing’s free!

Fun Skills Advertise

Strategic market shares

Direct revenue streams

Page 62: Iz Pack

Project type “Main” models

Framework and libraries

Consulting Training Support Dual licensing

Mission-critical infrastructure servers

Support plans Consulting Management tools Extensions

Products Open Core Extensions Customizations

Page 63: Iz Pack

Start

Users!

Patches!

Mature project

Community support

EasySolo work

Hard to reachManager work

Page 64: Iz Pack
Page 65: Iz Pack

Learn to say no

Be open

Spread the news!

Recruit developers

Page 66: Iz Pack

The hype

Patterns TDD,BDD

Best practices

IoC & DI

JSR xyz

Scripting

Page 67: Iz Pack

The hype

Patterns TDD,BDD

Best practices

IoC & DI

JSR xyz

Scripting

...your application code will eventually look bad!

Page 68: Iz Pack

Success

More... emails, requests, expectations, ...

Less... forgiveness, understanding, ...

Page 69: Iz Pack

Success

More... emails, requests, expectations, ...

Less... forgiveness, understanding, ...

You can’t scale... live with it!

Page 70: Iz Pack

(A)GPL LGPL, MPL, EPL, ... BSD, ASL, WTF, ...

Evil(mostly)

Fair Liberal

IzPackRuby on RailsAndroidApache

EclipseMozillaOpenOffice.orgXWiki

LinuxKDEDual licensingAnxious people

Page 71: Iz Pack

Governance

Rolesleads, maintainers, committers,contributors, users, ...

I.P. copyright transfer agreements,trademarks, ...

Rules coding standards, decision making, voting, ...

Page 72: Iz Pack
Page 73: Iz Pack
Page 74: Iz Pack

Thanks to...

The amazing IzPack community

Page 75: Iz Pack

Thanks to...

The amazing IzPack community

+&

(good luck friends!)