HEASOFT uses the HEADAS build environment (described in more detail below), and is composed of two basic parts: a set of mission- independent (HEATOOLS, HEASPTOOLS, et al.) and multi-mission (HEAGEN, ATTITUDE, et al.) FITS utilities which are developed and maintained within the HEASARC, as well as a set of mission-specific packages developed and maintained (in whole or in part) by outside groups. The core modern HEASARC utilities are generally written in ANSI C for maximum portability. Missions are, however, free to use any language they wish within their own package, bearing in mind that certain choices may limit the platforms and/or compilers on which their tasks will build and run.
Many of the older, legacy FTOOLS now have newer, improved analogs in HEASOFT, e.g. in the HEATOOLS or HEASPTOOLS packages, and all users and developers are encouraged to migrate their applications to use these new tasks instead. For the forseeable future, however, many tasks (predominantly Perl scripts) in mission-specific packages will continue to call tasks which still reside in the legacy FTOOLS portion of HEASOFT, and software distributions by the HEASARC will generally include all necessary components in a single tar file to make things as easy for users as possible. However, in keeping with a modular approach it is important that mission-specific tasks not link against the older FTOOLS libraries (e.g., xanlib). If mission developers find that they require those subroutines in their tasks then they should be migrated to an appropriate library, either in the HEASOFT core or a mission-specific library, and developers should coordinate with the HEASARC programming staff in this process.