Upload
inria
View
980
Download
1
Tags:
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
Julien Ponge
Free Open Source Software Academia Conference
November 17th & 18th 2009
Associate ProfessorTelecommunications, services and usages dept.
CITI / AmazonesDynamic systems
Formal systemsObservation
Security
EmbeddedPervasiveAmbientMobile
From a hack made in a student dorm room...
... not mine!
...to an industry-backed project.
Intro + Demo1
Some features2
Positioning3
Thoughts on F/OSS4
Intro + Demo1
Some features2
Positioning3
Thoughts on F/OSS4
Unique installer
Unique installer Multiple systems
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
Demo
One download
Works everywhere
Straightforward
~25.000 downloads per month
(...)
JavaOne 2008GrantInvited talks
Code contributions
Software licenses
Some features2
Intro + Demo1
Positioning3
Thoughts on F/OSS4
Some features2
Intro + Demo1
Positioning3
Thoughts on F/OSS4
Compiler
Installer JAR
Descriptor ResourcesFiles
Packs, conditions, langpacks,libraries, GUI, metadata, ...
Compiler
Installer JAR
Compiler
Installer JAR
Compiler
Installer JAR
Compiler
Installer JAR
<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>
(...)
<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>
(...)
(...)
<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>
<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>
<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
<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>
<conditions> <condition type="variable" id="start.glassfish"> <name>gf_start_domain</name> <value>true</value> </condition></conditions>
<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>
variables
Content-awarereplacement
Config files,scripts, ...
deflate (gzip) bzip2
raw pack200
Installer JARCustom panels
Custom actions
3rd-party libs
Installer JARCustom panels
Custom actions
3rd-party libs
Our very own native launcher, or...
.exe
Positioning3
Intro + Demo1
Some features2
Thoughts on F/OSS4
Positioning3
Intro + Demo1
Some features2
Thoughts on F/OSS4
BitRock InstallBuilderMacOSX packages
IzPack is the onlytrue cross-platform
installer to date
(...)
(...)IzPack is a
complement
Intro + Demo1
Some features2
Positioning3
Thoughts on F/OSS4
Intro + Demo1
Some features2
Positioning3
Thoughts on F/OSS4
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
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
Facts
Facts
I did not expect any success.
Facts
I did not expect any success.
You are always the last to know about usages.
Facts
I did not expect any success.
You are always the last to know about usages.
Community does not appear magically.
F/OSS... why?nothing’s free!
Fun Skills Advertise
Strategic market shares
Direct revenue streams
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
Start
Users!
Patches!
Mature project
Community support
EasySolo work
Hard to reachManager work
Learn to say no
Be open
Spread the news!
Recruit developers
The hype
Patterns TDD,BDD
Best practices
IoC & DI
JSR xyz
Scripting
The hype
Patterns TDD,BDD
Best practices
IoC & DI
JSR xyz
Scripting
...your application code will eventually look bad!
Success
More... emails, requests, expectations, ...
Less... forgiveness, understanding, ...
Success
More... emails, requests, expectations, ...
Less... forgiveness, understanding, ...
You can’t scale... live with it!
(A)GPL LGPL, MPL, EPL, ... BSD, ASL, WTF, ...
Evil(mostly)
Fair Liberal
IzPackRuby on RailsAndroidApache
EclipseMozillaOpenOffice.orgXWiki
LinuxKDEDual licensingAnxious people
Governance
Rolesleads, maintainers, committers,contributors, users, ...
I.P. copyright transfer agreements,trademarks, ...
Rules coding standards, decision making, voting, ...
Thanks to...
The amazing IzPack community
Thanks to...
The amazing IzPack community
+&
(good luck friends!)