AbiSource logo AbiSource banner

Home 

Company 
   Contacts 
   Press 
   Writings 
   About This Site 

Products 
   Download 
   Reviews 
   The Store 
   FAQ 
   Documentation 

Developer 
   Weekly News 
   POW 
   Screen Shots 
   Download 
   Build 
   Versions 
   Bugs 
   LXR 
   Doxygen 
   Bonsai 
   Tinderbox 
   Bugzilla 
   FAQ 

License 
   GPL 
   Trademark 

 

Developer FAQ

1. Overview
1.1 Why did you start a new codebase instead of using GWP or Maxwell?
1.2 Why are you supporting Windows?
1.3 Are you going to port AbiWord to my favorite platform?
1.4 How can I participate in the development of AbiWord?
2. Framework
2.1 Why does AbiWord use XML as its native file format?
2.2 Why doesn't AbiWord use HTML, XSL, CSS, DSSSL, etc?
2.3 If AbiWord uses XML, where is the DTD?
2.4 Under Linux, why are you using GTK+ instead of Qt?
2.5 Why don't you provide IDE project files for Microsoft Visual C++?
2.6 How do I use the Visual C++ debugger without a project file?
2.7 Why don't fonts work on Linux anymore?
3. Installation
3.1 How do I turn off statically linked executables?
3.2 How does 'make install' work?
4. Writing Code and Debugging
4.1 How do I debug AbiWord under Linux?
4.2 What is the proper etiquette for participating in the AbiWord development community?

1. Overview

Why did you start a new codebase instead of using GWP or Maxwell?
Neither GWP nor Maxwell is cross-platform. We believe that for Open Source to reach the next level of success, desktop tools must be able to bridge the gap between Linux and Windows.

Why are you supporting Windows? Isn't Microsoft evil?
One of the strengths of our product is that it is cross-platform. The ability of AbiWord to run on both Linux and Windows is a huge advantage for our user base. We believe that the flexibility to open AbiWord documents on any OS is the critical component in a project of this kind.

Are you going to port AbiWord to my favorite platform?
AbiSource intends to work actively on the Windows and Linux versions of AbiWord. AbiWord also currently builds on Solaris and the BSD variants. There is also a BeOS version available with much of the core functionality available. We are looking for outside help in getting ports to all other platforms.

How can I participate in the development of AbiWord?
There are a variety of ways to contribute. Look in our
developer area for more specific information.

2. AbiWord Framework

Why does AbiWord use XML as its native file format?
Because we like XML. Seriously, it seemed silly to invent yet another file format, when XML provides a very nice syntactic structure for our use. There are a variety of other options that did not make as much sense for our purposes.

Why doesn't AbiWord use HTML, XSL, CSS, DSSSL, etc?
HTML is a web page language. It lacks the features necessary to represent many word processing constructs. Shoehorning those features into HTML would be possible, but not pretty.

CSS was used as the basis for our design. However, CSS2 has weak support for pagination, and its box model breaks down somewhat when designing algorithms for non-rectangular text flow.

At the time of this writing, XSL was a moving target. We may end up moving in that direction over time.

DSSSL is far too complicated for our needs. As for style sheets in general, AbiWord is a word processor, not a structured XML editor. Separation of semantic markup from formatting instructions was never a goal.

If AbiWord uses XML, where is the DTD?
Enjoy!. This DTD is still somewhat of a moving target, as the AbiWord development team still must incorporate new additions such as lists, tables, and field types. This DTD is provided for informational purposes only, and should not be used as the definitive AbiWord file format resource.
An experimental XML Schema is also available for AbiWord. It should conform to the current draft of the W3C Schema standard.

Under Linux, why are you using GTK+ instead of Qt?
Politics. Most of the truly nerdy open source people prefer GTK+, since Qt is not quite free enough for the deepest dogma. We want the enthusiasm of those super-geeks right from the beginning, so we are making the choice that will make them happy. Truth be told, we would like to support both. If you would like to help with a Qt port, please let us know.

Why don't you provide IDE project files for Microsoft Visual C++?
We prefer the convenience of maintaining just one set of Makefiles for both Linux and Win32. Using Makefiles also makes it somewhat easier to do automated builds.

How do I use the Visual C++ debugger without a project file?
Visual C++ can be used as a debugger. Select "Open Workspace" under the File menu. Select "Executable Files" under the dropdown box called "Files of type". Use the dialog box to locate the EXE you want to debug. After doing this, Visual C++ will allow you to debug that EXE, just as if it were built from a project.

Why don't fonts work on Linux anymore?
As of 0.7.1, we have new font installation process. Fonts are now installed with the applications on all Unix platforms, in all package formats. This change was made to make overall installation easier and more predictable. We are planning to make available separate font archives when they change in the future. These archives will include instructions on upgrading existing installations. The fonts archives should not change much; in fact the contents of them have not changed since 0.5.4.

3. Installation

How do I turn off statically linked executables?
Each Unix platform Makefile defines two special variables, UNIX_CAN_BUILD_STATIC and UNIX_CAN_BUILD_DYNAMIC, for its platform. These values control whether the Makefiles will request compilation of statically linked or dynamically linked executables, respectively. Many people who compile AbiWord will not have all the library archives necessary for total static linkage (these files are often named with a ".a" or ".lib" suffix). In this case one can set the variable UNIX_CAN_BUILD_STATIC to a value of 0 either in the platform configuration file (abi/src/config/platforms/.mk) or on the 'make' command line ("make UNIX_CAN_BUILD_STATIC=0").

How does 'make install' work?
The "install" target is provided for Unix installation of AbiSuite utilies; the target currently does nothing for Win32, Macintosh, or BeOS platforms. A "make install", when run as root, will install AbiSuite applications, libraries, samples, and other resources in /usr/local/AbiSuite. It will also install two symblic links, /usr/local/bin/AbiWord and /usr/local/bin/abiword, which both point to /usr/local/AbiSuite/bin/AbiWord.

A note for users of "make install"": you'll need the abidistfiles and unixfonts trees as peers to the abi tree for the process to complete. These modules provide extra library files, fonts, samples, icons, and other data that needs to be installed for the applications to function properly. If you're using CVS access to the tree you can just issue the command "cvs checkout abidistfiles unixfonts" at the same level you issued your original "cvs checkout abi" command. This will put abidistfiles and unixfonts at a peer level to the abi tree. "make install" should now work.

In the future we will provide abidistfiles as standard zip and .tar.gz packages, like we do for unixfonts.

The "install" target obeys the "prefix" variable--"prefix" is set to "/usr/local" by default. You can have make set the variable for you if you invoke it like "make prefix=/home/jschmoe/dist install". The Makefile will then install AbiSuite applications and resources in /home/jschmoe/dist/AbiSuite and symbolic links in /home/jschmoe/dist/bin.

4. Debugging

How do I debug AbiWord under Linux?
AbiWord normally runs from a wrapper script that makes changes to your Unix environment and X server font path before starting the executable. If you want to run AbiWord in a debugger, you'll need to do these things manually first--these things are actually very simple.

This archived mailing list message will explain how to get started debugging AbiWord using a debugger like gdb.

What is the proper etiquette for participating in the AbiWord development community?
There aren't too many rules, but there are general guidelines of Open Source development. You will want to look at the AbiSource code guideline document in the /abi/docs directory. The current AbiSource development style is outlined in a previous mailing list post, located
here. For the rest of the story, it would be better to steer you toward some excellent meatier answers from other Open Source all-stars:
Havoc Pennington: http://www106.pair.com/rhp/hacking.html
Raph Levien: http://www.advogato.org/article/22.html

Copyright 1998-2001 SourceGear Corporation, Sam Tobin-Hochstadt and others. All rights reserved. Send comments to webmaster@abisource.com.
AbiSource, AbiSuite, AbiWord, and the AbiSource logo are trademarks of SourceGear Corporation. All other product names, company names, or logos cited herein are the property of their respective owners.