The Roller installation process is unacceptably complex and I'd like
to fix that. I've been thinking about the problem for a couple of
weeks now and I've talked to folks in Sun, at ApacheCon and JavaOne
about the problem. I looked at configuration features in Tomcat and
Glassfish. I also looked at installation instructions for popular Java
webapps Confluence, JIRA, Liferay Portal and Blojsom.

So far, I've identified four these options:


1) Property file based configuration
  - User puts JDBC and mail-session connection parameters in
roller-custom.properties
  - If no JDBC and mail-session properties are found, falls back to
JNDI resources
  - Roller creates/upgrades tables as needed (prompts user 1st and
can be disabled)
Pros:
  - Easy, just one properties file for all Roller configuration
Cons:
  - User still has to do configuration if they want to use JNDI resources


2) Separate installer for each Servlet container / app server
  - Installer prompts user for configuration parameters
  - Installer does all setup and deploys Roller
  - Roller creates/upgrades tables as needed (prompts user 1st and
can be disabled)
Pros:
  - Easy UI driven installation
  - Supports JNDI resources
Cons:
  - Need to develop separate installer for each Servlet container / app server


3) Standalone bundle with Roller, Servlet container / app server and database
  - User downloads, unpacks, runs startup script... done!
Pros:
  - Amazingly easy for user
  - We can steal creation script from Blogapps for the Roller, Derby,
Tomcat bundle
Cons:
  - We'll need a separate bundle for each server
  - Not a complete solution if user wants database other than one we bundle


4) Roller does completely handles it's own installation
  - Roller prompts user for configuration parameters, does all setup
     - Creating JNDI data-source and mail-session if needed
     - Or creating property file for non-JNDI based installation
  - Roller creates/upgrades tables as needed (prompts user 1st and
can be disabled)
Pros:
  - Easy UI driven installation
  - Does everything!
Cons:
  - Need to develop separate logic for each Servlet container / app server
  - May be difficult or impossible for some servers
  - May require application server jars in Roller's WEB-INF/lib directory


Before I go further with my proposal, I'd like to get some feedback.
At this point, I'm learning towards doing both options #1 and #2.
Option #3 is too limiting and option #4 is just too complex.

- Dave

Reply via email to