The purpose of extension modules is to add new primitives to the Orchids language.
Of course, that raises the question: why is the set of Orchids primitives not fixed?
In most cases, this is because some primitives might fail to be available on certain systems. For example, the IDMEF-related primitives will only be available on a system with the
libxml2 library for handling XML documents. Or, on a secure embedded system, you cannot count on having sendmail-related primitives.
It may also be that you do not wish to have certain primitives, and Orchids was configured so as to avoid certain modules.
That versatility allows Orchids to have the least possible amount of dependencies on its environment.