def METHOD_NAME(only_public = False):
    """Get a list of (name, description) pairs."""
    res = [("nop", "Tracing disabled.")]
    modnames = []
    for filename in os.listdir(tracetool.backend.__path__[0]):
        if filename.endswith('.py') and filename != '__init__.py':
            modnames.append(filename.rsplit('.', 1)[0])
    for modname in sorted(modnames):
        module = tracetool.try_import("tracetool.backend." + modname)
        # just in case; should never fail unless non-module files are put there
        if not module[0]:
            continue
        module = module[1]
        public = getattr(module, "PUBLIC", False)
        if only_public and not public:
            continue
        doc = module.__doc__
        if doc is None:
            doc = ""
        doc = doc.strip().split("\n")[0]
        name = modname.replace("_", "-")
        res.append((name, doc))
    return res