<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def describe(o):
 """Describes the object using developer-specified attributes specific to each main object type. Returns: dict: keys are specific attributes tailored to the specific object type, though `fqdn` is common to all descriptions; values are the corresponding attribute values which are *simple* types that can easily be serialized to JSON. """

    #First, we need to determine the fqdn, so that we can lookup the format for
    #this object in the config file for the package.
    from inspect import getmodule
    from acorn.logging.decoration import _fqdn
    fqdn = _fqdn(o, False)
    if fqdn is None:
        #This should not have happened; if the FQDN couldn't be determined, then
        #we should have never logged it.
        return json_describe(o, str(type(o)))
    package = fqdn.split('.')[0]

    global _package_desc
    if package not in _package_desc:
        from acorn.config import descriptors
        spack = descriptors(package)
        if spack is None:
            _package_desc[package] = None
            return json_describe(o, fqdn)
        else:
            _package_desc[package] = spack
    
    if _package_desc[package] is None:
        return json_describe(o, fqdn)
    elif fqdn in _package_desc[package]:
        return json_describe(o, fqdn, _package_desc[package][fqdn])
    else:
        return json_describe(o, fqdn)