Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Julien Ponge

Free Open Source Software Academia Conference

        November 17th & 18th 2009
Associate Professor
Telecommunications, services and usages dept.

CITI / Amazones
      Dynamic systems    Embedded
       Formal systems    Pervasive
          Observation    Ambient
              Security   Mobile
From a hack made in a student dorm room...




                                    ... not mine!
...to an industry-backed project.
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
Iz Pack
Unique installer
Unique installer   Multiple systems
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
Demo

 One download
 Works everywhere
 Straightforward
Iz Pack
Iz Pack
~25.000 downloads per month
(...)
JavaOne 2008
Grant
Invited talks



Code contributions




Software licenses
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
Iz Pack
Packs, conditions, langpacks,
        libraries, GUI, metadata, ...

Files          Descriptor               Resources




                Compiler




              Installer JAR
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>                             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>
<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>
Iz Pack
Iz Pack
Iz Pack
variables
                Config files,
                 scripts, ...




Content-aware
 replacement
Iz Pack
raw         pack200




deflate (gzip)    bzip2
Custom actions




Custom panels     Installer JAR




 3rd-party libs
Custom actions




Custom panels     Installer JAR




 3rd-party libs
.exe


Our very own native launcher, or...
Iz Pack
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
MacOSX packages   BitRock InstallBuilder
IzPack is the only
true cross-platform
  installer to date
(...)
(...)
         IzPack is a
        complement
Iz Pack
Iz Pack
Iz Pack
Iz Pack
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
1
      Intro + Demo


2
      Some features


3
       Positioning


4
    Thoughts on F/OSS
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
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
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

                   Consulting
Framework          Training
and libraries      Support
                   Dual licensing

                   Support plans
Mission-critical
                   Consulting
infrastructure
                   Management tools
servers
                   Extensions

                   Open Core
Products           Extensions
                   Customizations
Start         Easy
                    Solo work

     Users!


     Patches!


Community support

                    Hard to reach
  Mature project
                    Manager work
Iz Pack
Be open        Recruit developers




Learn to say no   Spread the news!
The hype

Patterns       TDD,     JSR xyz
               BDD




  Best                  Scripting
             IoC & DI
practices
The hype

     Patterns          TDD,           JSR xyz
                       BDD


...your application code will eventually look bad!

        Best                          Scripting
                     IoC & DI
      practices
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               Fair                Liberal
(mostly)

Linux              Eclipse             IzPack
KDE                Mozilla             Ruby on Rails
Dual licensing     OpenOffice.org       Android
Anxious people     XWiki               Apache
Governance
          leads, maintainers, committers,
Roles
          contributors, users, ...


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


          coding standards,
Rules
          decision making, voting, ...
Iz Pack
Iz Pack
Thanks to...


The amazing IzPack community
Thanks to...


The amazing IzPack community


                   (good luck friends!)


  &            +
Julien Ponge
INSA-Lyon
INRIA / CITI / Amazones

julien.ponge@insa-lyon.fr
julien.ponge@inria.fr

http://julien.ponge.info/

More Related Content

Iz Pack

  • 1. Julien Ponge Free Open Source Software Academia Conference November 17th & 18th 2009
  • 2. Associate Professor Telecommunications, services and usages dept. CITI / Amazones Dynamic systems Embedded Formal systems Pervasive Observation Ambient Security Mobile
  • 3. From a hack made in a student dorm room... ... not mine!
  • 5. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 6. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 9. Unique installer Multiple systems
  • 10. 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
  • 11. Demo One download Works everywhere Straightforward
  • 15. (...)
  • 16. JavaOne 2008 Grant Invited talks Code contributions Software licenses
  • 17. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 18. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 20. Packs, conditions, langpacks, libraries, GUI, metadata, ... Files Descriptor Resources Compiler Installer JAR
  • 25. <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> (...)
  • 26. (...) <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> (...)
  • 27. <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>
  • 28. <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>
  • 29. <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>
  • 30. <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>
  • 31. <conditions> <condition type="variable" id="start.glassfish"> <name>gf_start_domain</name> <value>true</value> </condition> </conditions>
  • 32. <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>
  • 36. variables Config files, scripts, ... Content-aware replacement
  • 38. raw pack200 deflate (gzip) bzip2
  • 39. Custom actions Custom panels Installer JAR 3rd-party libs
  • 40. Custom actions Custom panels Installer JAR 3rd-party libs
  • 41. .exe Our very own native launcher, or...
  • 43. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 44. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 45. MacOSX packages BitRock InstallBuilder
  • 46. IzPack is the only true cross-platform installer to date
  • 47. (...)
  • 48. (...) IzPack is a complement
  • 53. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 54. 1 Intro + Demo 2 Some features 3 Positioning 4 Thoughts on F/OSS
  • 55. 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
  • 56. 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
  • 57. Facts
  • 58. Facts I did not expect any success.
  • 59. Facts I did not expect any success. You are always the last to know about usages.
  • 60. Facts I did not expect any success. You are always the last to know about usages. Community does not appear magically.
  • 61. F/OSS... why? nothing’s free! Fun Skills Advertise Strategic market shares Direct revenue streams
  • 62. 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
  • 63. Start Easy Solo work Users! Patches! Community support Hard to reach Mature project Manager work
  • 65. Be open Recruit developers Learn to say no Spread the news!
  • 66. The hype Patterns TDD, JSR xyz BDD Best Scripting IoC & DI practices
  • 67. The hype Patterns TDD, JSR xyz BDD ...your application code will eventually look bad! Best Scripting IoC & DI practices
  • 68. Success More... emails, requests, expectations, ... Less... forgiveness, understanding, ...
  • 69. Success More... emails, requests, expectations, ... Less... forgiveness, understanding, ... You can’t scale... live with it!
  • 70. (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
  • 71. Governance leads, maintainers, committers, Roles contributors, users, ... copyright transfer agreements, I.P. trademarks, ... coding standards, Rules decision making, voting, ...
  • 74. Thanks to... The amazing IzPack community
  • 75. Thanks to... The amazing IzPack community (good luck friends!) & +
  • 76. Julien Ponge INSA-Lyon INRIA / CITI / Amazones julien.ponge@insa-lyon.fr julien.ponge@inria.fr http://julien.ponge.info/