On 30 May 2012 18:36, Igor Stasenko <siguctua@gmail.com> wrote:
On 30 May 2012 16:04, Ben Coman <btc@openinworld.com> wrote:
What ideas are floating around about mixing open source and closed source using Pharo? Â I am implementing an IEC Standard object model for electrical power systems to provide a platform for developing electrical applications. Â I am considering the case where a company may maintain the model of their electrical power distribution network in the open source platform, but then buy various commercial plug-ins perform different calculations upon the shared model. Â Here are the options I can imagine...
1. Using fuel to load binary packages within the one image without the source. Â Currently available technology but viewing and decompiling bytecode is still possible - but to what degree this enables reverse engineering I am not sure.
Decompiler is able to fully reproduce the source code of method. only variable names is lost, but you can see everything else quite clear.
I don't know the conditions, but Decompiler can certainly keep variable names _sometimes_. Maybe Pharo's and Squeak's Decompiler have diverged? Or maybe it's because the .changes file is available or something? frank
2. Having VM support for restricting displaying/decompiling bytecode. Â To avoid the ease of switching to another VM without this restriction, the fuel package could be encrypted with a key match one compiled inside the required VM.
this is not an option. A current Debugger implementation implies that you have access to CM bytecodes.
3. Running multiple images on a single VM such that the VM passing message calls efficiently between the two images like an "enterprise bus*" - one open source and one closed source. Â Any common base objects between the images might be shared on a copy-on-write basis.
What are your thoughts?
I think option 3 is most vital: you can communicate between two images like between two parties who don't trust each other (so images should handshake, use encryption key(s), and try to log-in one to other), then if succeed, one can be able to see source code  use  remote debugger etc Nothing new under the sun...
cheers -ben
-- Best regards, Igor Stasenko.