@dfumagalli
Enjoying software development since 1983
Nothing here yet.
Nothing here yet.
No blogs yet.
No, as long as your pro version performs functionality on your server, the end user cannot see neither the source code nor know how it's done. Example: your plugin performs Deep Learning. The plugin only shows an interface to configure the functionality and to register the pro version. The deep learning is then (only) performed on your own facilities. You can still give some functionality in the end user plugin and keep the most crucial portion private on your server. Of course the end user could re-create a neural network on his own and could figure out your equations etc. etc.... but at this point you are facing a guy who can just code his own plugin and does not need you anyway. So it's unlikely you would face this kind of user.
It's not very quick but it's relatively simple. Your premium version needs key algorithms or data to sit on a server of yours. The plugin comes in a free version that talks to your server's "free, public API" and gets limited / worse / free stuff out of it. They payware version involves the customer entering a registered API key they must purchase from you. That key is recognized by your server and it delivers premium data. Of course, what to give away or to keep past the pay-wall is for you to decide. Some plugins are straightforward, all you need to do is to give limited data / "runs per day" / "dumber algo" and you are done. Others need to provide limited data but lots of real time features, in this case it's going to be much harder to keep functionality on your server. But it's still done, look at some of the most famous WP plugins, their "pro" version usually works like I have described.
You don't "stumble" upon refactoring. In modern days, refactoring is a first class citizen in the development industry, exactly like unit testing (and other good practices). You should have a time slot or "ticket" for it, say 1 hour a day. If some days you don't need to refactor, you just keep putting tickets aside, until you need them. At this point you spend some or all of this accumulated time and do your refactoring. This helps with "time boxing" and development schedule in general.
I'll never forget that day, my 12th birthday. I had a brilliant year at school and my parents wanted to reward me. They knew I loved those "videogames" of old. Back then, we had those ancient console things like Pong / Tennis / Squash / Pelota. My little cousin had a Mattel Intellivision, an incredible piece of technology back then. So, they went to one of the handful electronics shops in town and purchased me a Commodore VIC 20. A true masterpiece of technology, with "vast amounts" of memory (all of 3583 bytes!). The vendor did not tell them this was not a videogame. When I opened it and connected it to the TV, I could not find a way to start any game. VIC 20 came with a true break-through idea: a massively simple and illustrated manual that would teach BASIC even to a rock. At the end of the manual itself, there were several pages with simple video-games source code. Yes, it was normal - back then - to spend 4 hours manually copying a source code from a written book into a computer. A computer with no storage, every time you powered it off, all was lost. This "write source code" thing, got me hooked with computers. Forever. Shortly after, I put together my little savings and purchased a Commodore cassette recorder and later, a massive 8 kilobytes memory cartouche. Since then, I have learned so many languages and technologies, from VAX to XENIX, from Commodore 64/128/16 to Apple II. From (some days worth of) AS400 to military systems. One hit concepts like NeXT and BeOS and staying workhorses (DOS / Windows / Linux). However... I'll never forget that feeling of manually entering HEX machine language codes in my VIC 20... type "sys 2081" and see my first language machine routines and videogames run. Stuff I, now 13 old, imagined and created out of thin air, stuff that simply did not exist before. A young boy could create - alone - a whole video game including "high res" graphics, sound effects and music. VIC 20 and Commodore 64 were huge influencers, there have been whole generations of developers born of those magnificent machines of old.