The docs say things like to have at least an empty __init__.py, but the stock collections like community.general don’t have one. Instead, they have lots of complex files (JSON in toplevel, YAML and text in meta/, …).
__init__ was required when doing sub directories for ‘adjacent’ plugins (might still be, need to check), but collections for core >2.10 should not need it anymore.