We receive many questions from users looking for a portable version of Apache OpenOffice.  "Portable Applications" are software applications designed or adapted to run from portable storage, like a USB memory stick, without requiring an installation.  Such applications allow you to bring your applications, settings and documents with you.  One popular portable version of OpenOffice is "X-ApacheOpenOffice", from the winPenPack open source project.   We interviewed the founder of winPenPack, Danilo
Leggieri, and his team to learn more.

What is winPenPack?  How did the project start?   How many people work on the project?

Well, it is really difficult to describe in a few words what this project
is for us, because since from the first moment has begun to be part of our
own life...  Briefly we can say that winPenPack is an Italian open source
project that deals with portable software, both natively portable and portabilized by means of X-Launcher, our portable program launcher. These
apps can be grouped into suites or can be used also as standalone
portable programs, adapting with end users preferences.

winPenPack philosophy is well summarized by our (very restrictive) definition of
"portable software": a portable program can't simply be a "no-install"
program, but must also be able to save its settings into his own folder
(or a user-definable folder), does not write settings or leave other data in user folders (i.e. into
c:\Users\TheUserName\AppData\Roaming\ or c:\Documents and
Settings\TheUserName) or into the registry, must be able to run from a
USB pen drive and can perform path normalizations moving around different
PCs (where the pen drive could be installed with different drive letters).
Obviously, all of these programs can be executed also from hard
drives, greatly simplifying recovery operations of all programs (and
their preferred configurations) when reinstalling the operating system.

Our
project started in November 2005 by a brilliant intuition of Danilo
Leggieri (AKA Danix, the founder of the project). Danilo and a couple
of "web friends" expanded the project and the community grew very
quickly. Since that date, we have issued about 20 new releases and hundreds
of Open Source portable applications. Actually, the project is well
known in Italy and is growing also abroad. winPenPack is hosted on
SourceForge and all the collections are regularly distributed also in
bundles with some IT magazines. The community of users has grown over
the years and has actively contributed to the growth of the whole project.
The site currently hosts various projects created and suggested also by forum members, and is also used for bug reporting and users
suggestions.

Currently, the project involves 6 officially active
people and a lot of contributors (translators, testers, and so on). All
of them are spending their time completely for free, working on the
project out of pure passion. Each member of the staff has a different
job in "normal life", not necessarily connected to the world of computer
and information technology.

How do you make a winPenPack application?  What kinds of things do you need to do to make a desktop application portable?

The core of all our portabilizations is X-Launcher, the winPenPack
program launcher. A program portabilized by X-Launcher is called an "X-Program". The folder structure of any X-Program always contains a \Bin
folder (the program folder) and a \User folder (the settings folder), plus
other optional folders, such as \Documents or \Downloads (depending on the
nature of the portabilized program). At the root of this structure there
is X-ProgramName.exe (the launcher of "ProgramName" program) and
X-ProgramName.ini (the text file that contains all the settings and
instructions for X-ProgramName.exe to make portable the portabilized
program). Due to its nature, the .ini file can be easily edited with any
text editor, simplifying the creation, the testing and the fine-tuning of
the portabilization. The various sections of the X-ProgramName.ini file
allow us to define the X-Launcher behavior towards the registry or the
user folders or to perform other actions. We can easily copy or move
registry keys or files or folders back and forth beween the USB pen drive
and the PC hard drive,  leaving the host PC
in the exactly same state it was before we executed it on our
X-Program.  So X-Launcher allows us to recreate the environment in which a
program works correctly (registry keys, user folders, etc.), but, after
the program execution completes, it leaves the PC "clean", because when closing the
program all these keys (or files) are moved back into the \User folder
of the portabilized program folders structure, ready to recreate the
environment at the next execution.

The process of portabilization of a
program passes through various steps. First of all, someone (a team
member or a forum user) signals an interesting program. We test its
portability through RegShot, which helps us understand if the program
uses the registry or the user folders for saving its settings or for
other purposes.  If, after our tests, the program turns out to be
natively 100% portable, it is added to the "Portable Software" section
of our Download area. If the program is not fully portable, we check
whether it is possible to make it portable through X-Launcher. This
phase reuses all the information gathered during portability tests to
determine which features of X-Launcher should be enabled to portabilize
the program.  This is the most important step, that requires all the
portabilization skills of our developers, and often makes the difference
between being able to consider a program portabilizable or not. The
last step is the packaging of the X-Program and its distribution through
our "X-Software" Download area. Sometimes even 100% portable programs
can receive some benefit from X-Launcher (for example, backups of
configurations, paths normalization, use in conjunction with external
libraries like Java), so we create also X-Programs of that kind.

Did you run into any special challenges when making the portable version of Apache OpenOffice (X-ApacheOpenOffice)?  Are there any changes we could make in the OpenOffice to make portable versions more powerful?

For developing X-ApacheOpenOffice Portable we were able to put into
practice our previous knowledge acquired in past years with early
versions of OpenOffice. This background helped us a lot for speeding up
the development of X-AOO Portable.

The more relevant features added to Apache OpenOffice for building the completely portable X-ApacheOpenOffice Portable are:

  1. Path normalization: all paths of recent files that are saved into X-AOO Portable folder structure have been normalized
  2. "System" folders: the \Documents and \Backups X-ApacheOpenOffice
    Portable subfolders have been set as "system" folders, also moving the
    main folder
  3. Disabled quickstart.exe: quickstart.exe has been
    disabled to prevent the soffice.exe process from remaining active in the traybar
    after closing the program, or when the user tries to disconnect
    the USB pen drive from the PC
  4. JavaGet integration: the
    integration of JavaGet functions into the launcher allows X-AOO to work
    with or without a Java installation present on the host PC

We
haven't had particular challenges to develop our portable version (just
some extra-time due to the download of all language versions to be
merged into one single X-Program). However, the fact that Apache
OpenOffice recognizes automatically the OS language has simplified our
work, allowing us to have a single launcher. For the future we would
like very much also a monolithic multi-language setup of Apache
OpenOffice to be used as a base for our portable X-ApacheOpenOffice
Portable.

When I think of portable applications I think mainly of putting apps on USB keys.  But are you seeing any other interesting uses, like people running their apps from the cloud, DropBox, etc.?

Portable programs aren't simply "apps to be run from USB keys".
Portable programs allow the users to carry in their pockets all their
preferred applications, with all their preferred settings, to be run anywhere they find a Windows PC with a free USB port. That's it. We
could even say that the portable programs were the forerunners of the
cloud: your programs, everywhere...  At this moment, we see cloud apps
more oriented to mobile devices (that are "portable" by definition).
Windows programs need an operating system in which to be executed. If we
would be able to run Windows portable programs from the cloud, the only
thing that we would do without would be exactly our USB pen drive... 

Where can readers go to learn more about winPenPack or to help with the project?

Of course on our site! We have a "Documentation" section that with
considerable efforts we have translated almost entirely in English, in
order to help as many users as possible. We have also
an English forum where we answer all users' questions and discuss any
other aspect of programs portabilization. You all are welcome to visit
us and donate to the project to allow us to continue to develop even
more exciting portabilizations!