The same way you are making a single version for all languages, the free version should also be updated in one single swoop
Right now, it does not show the power of the actual board. If I want to install it for a customer, it is a pain to install an old version I do not use any more, and then upgrade it to a totally different version if he ever decides to pay.
Simply leave out a lot of files and put additional code in
$paid_version=0; #if they put in =1
# and the files for the paid version are missing it will crash
if ($paid_version)
{print $feature_is_not_supported_in_free_version}
else
{print "<a href= ..........>"}
or even simpler
&free_version()||print "<a href= ...>";
You might even have a restricted version of the wwwthreads.pm api files, one general one and an additional one, only for the paid version, if you do not want to show off all kinds of subroutines that are not used in the free version.
Actually, I suggest you clearly separate the free files from the paid ones. Like putting them in a different subdirectory, or having all the free files start with f_ or some marker inside the file
Reason: this would allow me to copy my existing board, with all modification I made to it, just remove all files that belong to the paid version, and bingo I have a LEGAL free version
You could just provide a perl routine make_free_version_by_removing_paid_files.pl that deletes all files that have a marker ##paid_version## inside them