On Wed, Jul 1, 2009 at 10:12 AM, Stephen Pair <[hidden email]> wrote:
apologies for apparently being obstructive. I was just trying to properly frame the discussion. I want to separate linguistic from system issues. Your first question was an excellent one and asked if linguistic mechanisms could resolve the issue and I said why I thought not. I didn't realise you were shifting ground to propose solutions and thought you were still discussing linguistic mechanisms. Apologies. Please don't run out of steam because I'm not going with the flow. I hope I get where you're aiming at now.
Could you extend your scenario with the potential for malware to attempt to patch the AddressBook and suggest ways one can legitimately patch the AddressBook and at the same time protect it from unwarranted modification?
|
On Wed, Jul 1, 2009 at 1:59 PM, Eliot Miranda <[hidden email]> wrote:
Well, when you download the malware code, instantiate it and give it a handle to your AddressBook interface, as long as that interface doesn't let you do reflective things (like adding new methods) and doesn't let you do other destructive or undesirable things, then no matter how nefariously intentioned the malware is, it won't be able to do anything that you didn't explicitly give it the ability to do by exposing capability. This is what E is all about isn't it? And part of what Newspeak aims to address as well.
To legitimately patch the AddressBook, and do it in safe(ish) manner (I believe at some level, you have to have trust...after all, you trusted the original AddressBook code with your data) you would expose access to completely read (but not write) your address book objects...you would not expose access to the outside world...this new code would then migrate your data and setup the new address book code...you would then test out the new address book, and when, to you satisfaction it is handling you data in a responsible manner, you would expose any additional capabilities the address book needs (for example, send a vCard over bluetooth), then you would redirect your address book interfaces to the new code and data (you would need some means of forcing active clients off the old AddressBook implementation and onto the new).
I imagine much of the manual and careful steps above could be fully automated if you really trust the publisher of the code (so trust networks might be relevant). But, the you are still making a high level decision regarding to what degree you trust a given bit of code. In both cases, you are exposing only the capability that you expect is needed and you are holding back access to facilities that would enable the foreign code to do something it's not supposed to do.
(btw, you've alluded to some of Newspeak's synchronization plans, I'm not familiar with those (not sure if they've written extensively about those plans yet). So, they might have some good ideas around this stuff that I'm not bringing to this discussion because I haven't read up on it)
- Stephen |
In reply to this post by Juan Vuletich-4
On Wed, Jul 1, 2009 at 6:08 AM, Juan Vuletich <[hidden email]> wrote: Eliot Miranda wrote: basically my experience leads me to disagree that one can't patch. I think one needs to patch. The difference is between the kind of package and how deep the change it needs to make is. if, like me, you're working on the compiler you *absolutely need* to patch existing base classes to install a new compiler unless the system was architected to have a new compiler in the first place. This is the tension. When the system is well-enough architected one can use pluggable schemes that have been provided to avoid base patches. But real systems don't have those facilities everywhere and only have those facilities in places where system designers have the foresight to provide them. But to modify a system by loading packages to get to a point where it is more pluggable you'll need to patch base classes. Chicken and egg. So I prefer the approach that provides absolute power (you can patch anything) and provides argumentation guidelines and examples that help people avoid using that absolute power unless they absolutely have to.
I think there's an analogy with become and thisContext. These two features are extremely powerful and can be horribly abused (along with MNU handlers :) ). But in practice they don't get horribly abused, except perhaps by people experimenting and learning. But think what the system would be like *without* become and thisContext. It would loose huge amounts of power. With power comes responsibility but without power there is impotence and apathy :)
|
Free forum by Nabble | Edit this page |