A valuable concept that has been strengthened in me through my programming experience is that of scoping. In Perl and many other languages there's this idea that a certain variable or word only has meaning within a certain scope, or context, and that you can't use it without first defining the context that you're planning on using it. Giving words global meaning (which means you can use them anywhere without getting an error) is bad practice, it's considered sloppy coding. It's like in pool when you have to call the pocket you're aiming for before shooting. Or like pointing at the bleachers when you step up to bat. It gives the impression that you know what you're doing, and gives credibility to you when and if you actually end up doing it.
What you end up doing often is defining a word or phrase within a certain scope so that you can draw on its meaning when you need it, and then get rid of the word when you no longer need it. I wish English had this functionality, because I think most of the time our communication is riddled with errors due words with ambiguous scoping that leads to people not knowing what context you're saying something in.
Thinking about this a little more, I do think our spoken language has scoping built into it, but it's built at a more abstract level than in programming languages. For example, take this sentence:
Just lay down, I'll give you these drugs which will make you go unconscious and then I'll cut you open. When you wake up you'll be better.Without knowing the scope of this sentence, or the words in it, most likely we're not going to obey this person. If we were writing this sentence in Perl, there would have to be a way to know that it was spoken by someone who is certified and guaranteed to do exactly this thing, with some kind of contract between client and server that reassured me that if anything went wrong I would be able to remedy the situation to my satisfaction. When we hear these words outside of a program, that same type of scoping happens, but it includes information available about the speaker: is he or she a doctor, do they work for a hospital that is trusted, are they insured, does their face look friendly, have you heard of anyone ever getting hurt during this proceedure, etc. If you think about it, that's a really complicated system, and it does an amazing thing--it allows bold statements to be made that, within a certain scope, can be trusted.
Without this infrastructure of scoping, it would probably never be worth the risk to have surgery, because there would never be any way to know if the person cutting you up was going to kill you in the process or not.
Okay, it looks like English does have scoping capabilities, just like Perl. But what about the internet in general? What mechanisms do we have in place to know if one website is trustworthy? Well, there's not much. If I get an email telling me to send them $100 and they will send me $10,000 after 6 weeks, how do I know if they can be trusted? How can that sentence be scoped, in order to allow bold statements to be made and be trusted at the same time. I feel like there were probably tons of 20/20 episodes dedicated to this issue of online trust, but again, I'm just catching up here.
Here's my point: I think scoping online will be done much the same way that it is done offline. You have to start with something that you trust, and I think that will come down to a friend or a family member. From there, you can build out your network of trust to include large groups of strangers that are referred to you by friends and family members (this will include companies and organizations), other individuals that you don't know but know a friend or family member or trusted organization, etc. At some point, in order to further extend the network of trust, certificates might come into play... if an unknown person isn't linked to a trusted friend directly, but has certification that is trusted by a trusted friend, then that will work. There's probably a science hidden under this phenomenon of extending trust... along with creative inventions that allow us to push our trust out further than we might otherwise be able to. That's because the more we trust, the more power we have--the more we're able to do without fearing for our lives.
There are probably also checks and balances along the way... there's always a chance that a trusted person or organization betrays your trust. Even a close friend might end up hurting you either on purpose or on accident. Either way, that effects the scope of statements that are linked to that context.
What I want to build, or see someone else build, is one of these tools that helps extend the power of trust and scope online. Everyone knows it's a problem, everyone is waiting for someone to fix it, but the people who are trying to fix the problem have trust problems themselves (the government, Microsoft). These tools can't be built by people I don't trust, isn't that obvious? Well, then who will make this and how will it be implemented? I think it'll have to be implemented by a group of people who don't have commercial interest in the product. Open Source sounds right to me. So does a distributed model that allows people to set up their tools on their own server or desktop.
I can't wait until we have the power to make bold statements online that, without trust tools would be impossible to make. Then we can start really engaging with the world that has become connected through the internet... it will be more than a way to connect to friends and families, it will be a way to connect to anyone that is trustworthy. There are lots of trustworthy people out there, we just don't have good ways of finding them yet.