Also, if you're THAT concerned about 'piracy' of your proprietary LISP source code, then consider a *custom* compile for each *client* which checks for URL authentication.
Launch your own website/registered domain, and add a new page for each authorized *client*, and compile each deliverable individually, so that it (your compiled code) checks for the hard-coded, client specific URL token... if it (the hard-coded URL token) does not exist, i.e., you delete/rename the page if they don't pay the bill, then their code automagically stops working.
(defun verify ()
(vl-load-com)
((lambda (oUtil url)
(if (vl-catch-all-error-p
(vl-catch-all-apply
'vla-GetRemoteFile
(list oUtil url 'tempPath :vlax-true)))
(progn
(ErrMsg)
(defun c:SomFunc () (ErrMsg))
;; <-- Redefine more functions here
(vl-file-delete tempPath) ;<-- Delete downloaded token
))
(vl-catch-all-apply 'vlax-release-object (list utilObj)))
(vla-get-utility
(vla-get-activedocument (vlax-get-acad-object)))
"http://www.YourSite.com/ClientName.token" ;<-- Hard-coded url for each client
)
(princ))
As your client specific deliverable is compiled, and your client list is confidential, there's no worry that one client could find out another (if they were to not pay the bill), then modify the code as it (the deliverable) is compiled.
Again, just a thought.