I am busy writing a plugin with a free version and a paid, Pro version. For our initial release of both versions, I want to keep things as simple as possible, so I would rather defer using a strategy of a very extensible free version, with hooks implemented in a Pro version; I will give this direction some attention for later releases. My next avenue is to simply have two completely separate builds that include some core, shared components, and some components specific to the Pro or Free versions.
The purpose of my question here is to try and gather some advice on my third angle, that of using checks in code that only perform actions etc. if a certain version is running, i.e. if the client calling core services is Free or Pro. What should I be looking at to attempt this avenue of feature limiting?