This document discusses migrating to OSGi and modularity through a services-first approach. It presents a five stage modularity maturity model moving from ad hoc to optimized modularity. It discusses how popular instantiation patterns like Class.forName cause tight couplings that prevent modularity. Microservices primitives like a broker are presented as an alternative to break dependencies. An example is provided of extending Ant tasks using this approach to demonstrate migrating existing applications without fences by exploiting OSGi concepts. The conclusion is that a services-first approach enables modularity without fences, making a future migration to OSGi bundles easier.