We're all familiar with the Java package name convention of turning the domain name around. I.e. www.evilcorp.com would, by convention, chose to have their java packages com.evilcorp.stuff.Increasingly I'm getting fed up with this. As a commercial programmer, I encounter time and again that the software package name is completely irrelevant due to some rebrand, acquisition or similar.In the opensource world there's less name changes so there it makes sense. However it seems to me the shelf life of many pieces of (commercial/internal) software are much longer than that of the organisation making them.The problem is often made worse by software projects taking the marketing department's lead to use the name du jour they use refer to a certain project. A name that will, without fail, change 3 months down the line to make the emperor's new clothes feel fresh and new.Because of this, I've mostly stopped using the reverse domain as package name. Granted, if this is done on a large scale, there's risk of name collisions, but surely this is mitigated by either using unique software names, avoiding generic words, or use the reverse domain for projects intended to be sold/released as libraries.Other thoughts?
Is the Java package name convention flawed?
java;naming
I'm going to quote the advice Microsoft gives for namespaces (.NET's packages), which doesn't have the domain name convention. I think it's good advice for Java packages too, since I don't believe that a domain name represents a solid and stable identity.The general format for a namespace name is as follows:<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]For example, Microsoft.WindowsMobile.DirectX. Do prefix namespace names with a company name to prevent namespaces from different companies from having the same name and prefix.Do use a stable, version-independent product name at the second level of a namespace name.Do not use organizational hierarchies as the basis for names in namespace hierarchies, because group names within corporations tend to be short-lived.The namespace name is a long-lived and unchanging identifier. As organizations evolve, changes should not make the namespace name obsolete.If even your company name is unstable, you might want to just start with the product name.