Tuesday, July 12, 2011

My exploration around #GooglePlus. Interesting start but lots still to build. @Google don't make #GooglePlus an Island

I finally got an invite to GooglePlus. The question is now "Do I want yet another Social Network to visit?"
In my initial explorations with GooglePlus I recognize, like many others, that I don't want yet another place to visit. What I want is a service that I can integrate in to my current Social process flows.
I want GooglePlus in my Tweetdeck dashboard.  I want to be able to post from email. I want to autopost from Posterous to GooglePlus. I want to filter the stream for content that is valuable to me. 
So far Google has basically recruited a volunteer army of real time content curators. If GooglePlus is to have a place in the Real-Time social stream they need to equip this army of curators with tools to handle the information flow. Circles just don't cut it on their own. 
I agree with Matthew Holt (@BoltyBoy) who said. "Until they open the API and let me post from Twitter I'm not likely to come here much"
Pastedgraphic-1
My admittedly limited explorations with GooglePlus have identified  three areas Google needs to address quickly:
1. Search. After an item drops off the front page of the stream it becomes increasingly hard to re-discover. 
2. Filtering. We need dynamic filtering, just like Twitter hashtags to help us handle the deluge of information
3. No Platform is an island. GooglePlus is currently an island we need APIs to allow us to integrate GooglePlus in to our established social media process flows. If Google fails to do this then GooglePlus will quickly become a quaint idea that fails to scale beyond the audience of techies that hop on to the latest new fad.
So Google, if you are listening, if you want to earn those bonuses that are tied to success in the social waters you have your work cut out for you. You need to build the interfaces to GooglePlus and build them quickly before the massive interest in the platform dissipates.
Let's look at each of these three areas for improvement in more detail.
1. One of the first challenges - Search
It is ironic that for a company with a core competence in search - there is no obvious way to search your stream and comments in GooglePlus.
I wanted to point to Matthew's comment but you can't search for a past comment on GooglePlus - If you know how please let me know! The only way I have found to search is to keep the email notifications and search those in your email. 
The post was from yesterday but I don't want to scroll through my stream to get back to a comment. With the take up of GooglePlus the Stream is fast becoming useless for anything more than entries from the past few minutes.
If Tweetdeck had not been bought by Twitter I could see them adding a stream to Tweetdeck and allowing us to filter the stream.
2. Filter the Stream to Add Value
The sheer volume of stream entries and comments demands tools to make sense of the information overload. GooglePlus needs to look at the success of the Twitter ecosystem and let us apply filters, tags and other emergent folksonomy tools to allow us to manage our stream. Let me create these filters as RSS feeds so I can pull the data in to other channels, such as Google Reader.
The idea of a stream in GooglePlus is great and has tremendous potential value, but what Google has unleashed is a veritable Niagara Falls and very few people  survive a trip over the falls.
3. Build Bridges to the Island
At present GooglePlus is an island. Yes, it is easy to visit the island. From there you can look out at other islands and other streams. You can link and pull content in to the island that is GooglePlus but what you can't do easily is to send content to GooglePlus from other places. As Matthew Holt said - "We need the API!"
At the very least Google needs to provide an ability for a GooglePlus member to publish content to their stream using email. Give me a custom email. Allow me to use a tagging format in the email body or the email address to direct content to one or more circles. Google - If you need help with this - just look at Posterous. They have this sorted out.
After delivering inbound email they then need to deliver some SIMPLE javascript to allow us to add a "Post to GooglePlus" link on other sites and to let us automatically populate the post with a link, picture etc. 
I have been experimenting with this. I have some simple code that will pop up the mobile posting interface but my coding skills are a little rusty so I am so far unable to:
  • Embed the mobile Posting page inside another page or iFrame
  • Pre-populate the edit text field with content
I have tried to add the page to an iFrame. I get a blank iFrame but when I click to load the iFrame in a new window or tab the page loads. Frustrating! Does anybody want to collaborate to solve this challenge?
Pastedgraphic-3
I did post the code to my GooglePlus stream but as pointed out in point 1, that won't be easy to find. So here is the current crude attempt. I make no claims for the quality of the code. I have stolen liberally from code published around the web and am happy to credit anyone else for their published code. 
There are four problems to solve:
1. Get the GooglePlus page to appear directly in the iFrame
2. Update the Edit text section in the GooglePlus page with information from the page the iFrame is contained in
3. Once the Edit Text section can be updated the next step is to allow parameters to be passed in via a RESTful call and passed in the text section. 
4. Convert the code to a javascript snippet/widget that can be added to a toolbar and used to populate the text selection in a page to be posted to GooglePlus.
Code Starts here:
  
<html> <head> <title>GooglePlus Post-2-Stream</title> <script type="text/javascript"> 
function load_content ( id, content ) { var node = document.getElementById( id ); node.innerHTML = content; } var IFrameObj; // our IFrame object function callToServer() { if (!document.createElement) {return true}; 
var IFrameDoc; var URL = 'https://m.google.com/app/plus/mp/25/?source=mog&gl=us#~loop:sv=stream&svt=circles&view=compose'; 
if (!IFrameObj && document.createElement) { 
// create the IFrame and assign a reference to the 
// object to our global variable IFrameObj. 
// this will only happen the first time 
// callToServer() is called 
try { var tempIFrame=document.createElement('iframe'); 
tempIFrame.setAttribute('id','RSIFrame'); 
tempIFrame.style.border='0px'; 
tempIFrame.style.width='280px'; 
tempIFrame.style.height='480px'; 
IFrameObj = document.body.appendChild(tempIFrame); 
if (document.frames) { 
// this is for IE5 Mac, because it will only 
// allow access to the document object 
// of the IFrame if we access it through 
// the document.frames array 
IFrameObj = document.frames['RSIFrame']; } } 
catch(exception) { 
// This is for IE5 PC, which does not allow dynamic creation 
// and manipulation of an iframe object. Instead, we'll fake 
// it up by creating our own objects. 
iframeHTML='\<iframe id="RSIFrame" style="'; iframeHTML+='border:0px;'; iframeHTML+='width:280px;'; 
iframeHTML+='height:480px;'; 
iframeHTML+='"><\/iframe>'; 
document.body.innerHTML+=iframeHTML; 
IFrameObj = new Object(); 
IFrameObj.document = new Object(); 
IFrameObj.document.location = new Object(); 
IFrameObj.document.location.iframe = document.getElementById('RSIFrame'); IFrameObj.document.location.replace = function(location) { 
this.iframe.src = location; } } } 
if (navigator.userAgent.indexOf('Gecko') !=-1 && !IFrameObj.contentDocument) { 
// we have to give NS6 a fraction of a second 
// to recognize the new IFrame 
setTimeout('callToServer()',10); 
return false; } 
if (IFrameObj.contentDocument) { 
// For NS6 
IFrameDoc = IFrameObj.contentDocument; } 
else if (IFrameObj.contentWindow) { 
// For IE5.5 and IE6 
IFrameDoc = IFrameObj.contentWindow.document; } 
else if (IFrameObj.document) { 
// For IE5 
IFrameDoc = IFrameObj.document; } 
else { return true; } 
IFrameDoc.location.replace(URL); 
return false; } 
</script> 
</head> 
<body> Load GooglePlus 
<script type="text/javascript"> 
shareTHISurl = document.location.href; </script> 
<h1>Google Plus Posting Utility</h1> 
<div id='GooglePlusWdgetEditArea'> </div> 
<script type="text/javascript"> 
Dothis = callToServer();
         document.getElementById('cmp-editing-text').src="nojavascript...void( document.getElementById('cmp-editing-text').value='Hello G+ World' );"; 
</script> </div> 
</body> 
</html>

Code Ends Here.