Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Iz Pack

1,319 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Iz Pack

  1. 1. Julien Ponge Free Open Source Software Academia Conference November 17th & 18th 2009
  2. 2. Associate Professor Telecommunications, services and usages dept. CITI / Amazones Dynamic systems Embedded Formal systems Pervasive Observation Ambient Security Mobile
  3. 3. From a hack made in a student dorm room... ... not mine!
  4. 4. ...to an industry-backed project.
  5. 5. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  6. 6. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  7. 7. Unique installer
  8. 8. Unique installer Multiple systems
  9. 9. v2 Download for your operating system 1: java -Xmx256m -jar filename.jar 2: chmod -R +x lib/ant/bin 3: lib/ant/bin/ant -f setup.xml 4: bin/asadmin start-domain domain
  10. 10. Demo One download Works everywhere Straightforward
  11. 11. ~25.000 downloads per month
  12. 12. (...)
  13. 13. JavaOne 2008 Grant Invited talks Code contributions Software licenses
  14. 14. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  15. 15. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  16. 16. Packs, conditions, langpacks, libraries, GUI, metadata, ... Files Descriptor Resources Compiler Installer JAR
  17. 17. Compiler Installer JAR
  18. 18. Compiler Installer JAR
  19. 19. Compiler Installer JAR
  20. 20. Compiler Installer JAR
  21. 21. <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> (...)
  22. 22. (...) <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> (...)
  23. 23. <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>
  24. 24. <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>
  25. 25. <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> Ant-style: **/* <executable targetfile="$INSTALL_PATH/lib/ant/bin/ant" dir/*.class stage="never" os="unix" /> **/*.jar <parsable targetfile="$INSTALL_PATH/bin/launch-browser.sh" lib/**/*.jar os="unix" /> </pack>
  26. 26. <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>
  27. 27. <conditions> <condition type="variable" id="start.glassfish"> <name>gf_start_domain</name> <value>true</value> </condition> </conditions>
  28. 28. <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>
  29. 29. variables Config files, scripts, ... Content-aware replacement
  30. 30. raw pack200 deflate (gzip) bzip2
  31. 31. Custom actions Custom panels Installer JAR 3rd-party libs
  32. 32. Custom actions Custom panels Installer JAR 3rd-party libs
  33. 33. .exe Our very own native launcher, or...
  34. 34. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  35. 35. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  36. 36. MacOSX packages BitRock InstallBuilder
  37. 37. IzPack is the only true cross-platform installer to date
  38. 38. (...)
  39. 39. (...) IzPack is a complement
  40. 40. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  41. 41. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  42. 42. X11 v3.0.0 shortcuts v2.0 Win32 shortcuts CommunityOne (rewrite) UserInputPanel GPL JavaOne 2001 2004 2008 2009 03 08 11 08 02 01 05 04 05 04 11 2002 2005 v1.0 v2.10.0 Move to Move to v4.3.0 v4.3.2, CVS @TuxFamily BerliOS Codehaus fOSSa Fast development Steady growth, people keep on joining
  43. 43. You decide to use it for X11 your next projects v3.0.0 shortcuts v2.0 Win32 shortcuts CommunityOne (rewrite) UserInputPanel GPL JavaOne 2001 2004 2008 2009 03 08 11 08 02 01 05 04 05 04 11 2002 2005 v1.0 v2.10.0 Move to Move to v4.3.0 v4.3.2, CVS @TuxFamily BerliOS Codehaus fOSSa Fast development Steady growth, people keep on joining
  44. 44. Facts
  45. 45. Facts I did not expect any success.
  46. 46. Facts I did not expect any success. You are always the last to know about usages.
  47. 47. Facts I did not expect any success. You are always the last to know about usages. Community does not appear magically.
  48. 48. F/OSS... why? nothing’s free! Fun Skills Advertise Strategic market shares Direct revenue streams
  49. 49. Project type “Main” models Consulting Framework Training and libraries Support Dual licensing Support plans Mission-critical Consulting infrastructure Management tools servers Extensions Open Core Products Extensions Customizations
  50. 50. Start Easy Solo work Users! Patches! Community support Hard to reach Mature project Manager work
  51. 51. Be open Recruit developers Learn to say no Spread the news!
  52. 52. The hype Patterns TDD, JSR xyz BDD Best Scripting IoC & DI practices
  53. 53. The hype Patterns TDD, JSR xyz BDD ...your application code will eventually look bad! Best Scripting IoC & DI practices
  54. 54. Success More... emails, requests, expectations, ... Less... forgiveness, understanding, ...
  55. 55. Success More... emails, requests, expectations, ... Less... forgiveness, understanding, ... You can’t scale... live with it!
  56. 56. (A)GPL LGPL, MPL, EPL, ... BSD, ASL, WTF, ... Evil Fair Liberal (mostly) Linux Eclipse IzPack KDE Mozilla Ruby on Rails Dual licensing OpenOffice.org Android Anxious people XWiki Apache
  57. 57. Governance leads, maintainers, committers, Roles contributors, users, ... copyright transfer agreements, I.P. trademarks, ... coding standards, Rules decision making, voting, ...
  58. 58. Thanks to... The amazing IzPack community
  59. 59. Thanks to... The amazing IzPack community (good luck friends!) & +
  60. 60. Julien Ponge INSA-Lyon INRIA / CITI / Amazones julien.ponge@insa-lyon.fr julien.ponge@inria.fr http://julien.ponge.info/

×