Ganz grob gesagt: Du kannst das benutzen, was du auch selbst implementierst. Wenn du sonst übliche Schnittstellen implementierst, dann kannst du einfacher Programme portieren, aber rein grundsätzlich kannst du dir deine Bibliotheken auch ganz anders aufbauen.