Features

Portability

Portability Issues:

You have to take care for the differences on the following subjects:

The library code is aware of it but on the user side there are still too much silent wrong assumptions.

Don't change the system for your application

Don't abuse system directories, provide your own subtree structure.

Don't abuse ACAD.LSP for dozens of aliases!

Never modify Acad specific support files besides the ones which are intended to be customized (acad.rx, acad.lsp, acad.fmp, acad.pgp but not acad.mnl, acad.mnu,acadr14.lsp, ai_utils.lsp and such). If you change those files make backups and provide uninstallers.

Provide a special profile or configuration files and directories for your app and think of special startup methods (desktop icons, start batches)

Provide installers and uninstallers to make life easy. There are free and simple windows installers around. You don't have to use InstallShield and its overboarding functionality and size.

Even private extensions might attract your colleague. This can get annoying so be warned and take care.

Filesystem

Use filesystem predicates.

Think of

File locations

Never use hardcoded paths if even if they may be faster!

Not in lisp code and not in menu code. This will work on your system but not on every other system worldwide. Only some unix based systems (System V) provide a systematic approach of standard file locations but on other systems this will vary.

Use the features provided to read and store variables in inifiles, configuration files or the registry or use other portable ways to get the location of the needed file.

You might use registry entries to locate some common files, such as MS Office applications, libraries or files.

Operating Systems

Use platform predicates,

AutoCAD Release Compatibility

Keep it backwards and forwards compatible for various AutoCAD releases and clones.

Use release predicates. Check for

AutoLISP System Compatibility

Use lisp system predicates.

Think of special code for new and omitted lisp specific features such as: