GSOC 2012 - Improve Facebook Integration

153 views
Skip to first unread message

Kamal Joshi

unread,
Mar 24, 2012, 11:52:34 PM3/24/12
to silverst...@googlegroups.com
Hi all,
I am a Computer Engineering Student from NSIT, Delhi

I have been working with SilverStripe for over a week now and i am finding it quite easy to maintain and modify.
Overall I like the CMS and want to work for your organisation.

I have past experience working with CMS like Joomla!(http://www.nsitonline.in/ : A Joomla site i maintain) & Wordpress.
& have also worked with Facebook Integration on the site(not yet operational) and also on Facebook apps(like :  http://apps.facebook.com/moksha_conundrum/  ) so i am quite familiar with Facebook API's.

Goals of the Project :-
  • Automatically copy content (text, images, videos, events, and comments) from a Facebook profile or wall and integrate it into a SilverStripe site
    • This one is tricky as it will require a cron job to pick up the data from Facebook and post it in the form of articles.
  • Provide a similar functionality for the other direction -- content posted on a SilverStripe site should automatically be pushed to Facebook
    • This one is relatively easy as the POST button will trigger a content push onto Facebook using the Open Graph (publish_stream)

  • Integrate Facebook photo albums into a SilverStripe site
    • This one can be achieved in a similar visual manner as the Flickr one. Open Graph(user_photos) can be used to pick up photos and make a carousel album viewer.

  • Use Facebook comments on a SilverStripe page (including the avatar)
    • This one is probably the easiest one as it will require addition of only a small script as a module in the bottom of articles & then things like Comment number can be be pushed( in a similar manner as sites like techcrunch do it).

 
  • Possibly extend Will’s module for profile management in SilverStripe (trying to reuse as much information from Facebook as possible), only in this direction
    • This one is also relatively easy and can be achieved using the PHP-SDK.

Now the Comment system can be implemented as a standalone module so as to keep the whole integration modular and make it easy to turn ON/OFF commenting.
Facebook Photo albums also be separated to give a module like the Flickr one.
while the second one can be attached as a Push to the post script or can be added as a button to the users who have enabled the module so as to give them choice over what content to push or not.
I am still working on the details of how to implement the first one as a cron job(doing it in a manner like where user can selectively push will be easier but more cumbersome)

I think we can begin by first implementing the comment system followed by the Photo album/Post to FB and then can follow with the rest.

@Philipp Sir : While we are at it we can also integrate Twitter so that when the blogger publishes a post it's title and a link to it is pushed to the Twitter Feed(in a manner similar to Tumblr does it) of the publisher. Bloggers will love this tool as most of them have a good and active reader following on Twitter . This can be achieved by using the Oauth system that Twitter uses.

Looking forward to hearing some feedback from you.

Kamal Joshi
IM : kmljsh(Skype)

xeraa

unread,
Mar 25, 2012, 5:50:23 PM3/25/12
to silverst...@googlegroups.com
Hi Kamal,
 
Goals of the Project :-
  • Automatically copy content (text, images, videos, events, and comments) from a Facebook profile or wall and integrate it into a SilverStripe site
    • This one is tricky as it will require a cron job to pick up the data from Facebook and post it in the form of articles.

Concerning the cron job, you might want to take a look at http://deadlytechnology.com/silverstripe/scheduled-tasks/
However, this assumes users can set up a cron job, which might not be possible on shared hosts.
Drupal has a module called Poormanscron, which replaces this requirement and triggers jobs by requests to the website. However, this is rather a standalone module and beyond the scale of your project - just to point out an alternative.
How you want to approach this is up to you.

Here's a tricky question: You'll get an endless stream of activities from FB - how do you want to add them to your site? Keep the last X entries and remove the others, post everything to the blog module where every entry is a dedicated blog entry,...?

  • Provide a similar functionality for the other direction -- content posted on a SilverStripe site should automatically be pushed to Facebook
    • This one is relatively easy as the POST button will trigger a content push onto Facebook using the Open Graph (publish_stream)

Another tricky question: How do you handle updates to your site? If it's new content, you'll probably want to post it to FB, if it's a minor correction you probably won't (as there are no updates to FB entries). Do you want to handle this automatically, provide a checkbox ("post to FB"),...?

 
  • Integrate Facebook photo albums into a SilverStripe site
    • This one can be achieved in a similar visual manner as the Flickr one. Open Graph(user_photos) can be used to pick up photos and make a carousel album viewer.

Ok - some more details in the final application would be nice. If you already know how you'll do that, we don't need to discuss it here right away. I'd only want you to have a good understanding of each task, so that we can establish sensible estimates for the implementation.
 
  • Use Facebook comments on a SilverStripe page (including the avatar)
    • This one is probably the easiest one as it will require addition of only a small script as a module in the bottom of articles & then things like Comment number can be be pushed( in a similar manner as sites like techcrunch do it).

Same as above.
 
    •  
  • Possibly extend Will’s module for profile management in SilverStripe (trying to reuse as much information from Facebook as possible), only in this direction
    • This one is also relatively easy and can be achieved using the PHP-SDK.

Same as above.
 
Now the Comment system can be implemented as a standalone module so as to keep the whole integration modular and make it easy to turn ON/OFF commenting.

What's the scope here - can we only comment on pages or also on DataObjects? You might want to take a look at SilverStripe's comment module (which has been part of core, but has now been moved into a dedicated module) for possible solutions.
 
Facebook Photo albums also be separated to give a module like the Flickr one.
while the second one can be attached as a Push to the post script or can be added as a button to the users who have enabled the module so as to give them choice over what content to push or not.
I am still working on the details of how to implement the first one as a cron job(doing it in a manner like where user can selectively push will be easier but more cumbersome)

I think we can begin by first implementing the comment system followed by the Photo album/Post to FB and then can follow with the rest.

Sounds sensible.
 
@Philipp Sir : While we are at it we can also integrate Twitter so that when the blogger publishes a post it's title and a link to it is pushed to the Twitter Feed(in a manner similar to Tumblr does it) of the publisher. Bloggers will love this tool as most of them have a good and active reader following on Twitter . This can be achieved by using the Oauth system that Twitter uses.

There are some Twitter modules, I'm not sure if they are not already able to handle this.
Pushing the data to Twitter is pretty simple. If you want to, you can add that as an easy task to start with, but I don't think this is a major issue for the project.
 
Cheers,
Philipp

Kamal Joshi

unread,
Mar 26, 2012, 11:48:46 AM3/26/12
to silverst...@googlegroups.com
Concerning the cron job, you might want to take a look at http://deadlytechnology.​com/silverstripe/scheduled-​tasks/
However, this assumes users can set up a cron job, which might not be possible on shared hosts.
Drupal has a module called Poormanscron, which replaces this requirement and triggers jobs by requests to the website. However, this is rather a standalone module and beyond the scale of your project - just to point out an alternative.
How you want to approach this is up to you.
Here's a tricky question: You'll get an endless stream of activities from FB - how do you want to add them to your site? Keep the last X entries and remove the others, post everything to the blog module where every entry is a dedicated blog entry,...?

I am still working on the details of the Facebook --> SS Site implementation.

Activities can be prioritized like Check-ins can be ignored and small status updates, events that the user is attending can be compiled in the timeframe of 12 hrs(user dependent) in the form of a single post while a large post can be posted in a single article form.

Another tricky question: How do you handle updates to your site? If it's new content, you'll probably want to post it to FB, if it's a minor correction you probably won't (as there are no updates to FB entries). Do you want to handle this automatically, provide a checkbox ("post to FB"),...? 

I think an implementation like Tumblr does for Twitter will be fine where we can provide a checkbox for the user to selectively post on Facebook.

Ok - some more details in the final application would be nice. If you already know how you'll do that, we don't need to discuss it here right away. I'd only want you to have a good understanding of each task, so that we can establish sensible estimates for the implementation. 

The crucial thing in the photo module thing would be to control photo access by the module. No one would want his each personal photo to be posted on his blog so we would have to take care of that by enabling a particular album access from the user(this thing is also a valid concern for status updates). & also we will have to copy the images on the site's server by using the access token.

What's the scope here - can we only comment on pages or also on DataObjects? You might want to take a look at SilverStripe's comment module (which has been part of core, but has now been moved into a dedicated module) for possible solutions. 

We can also make commenting possible on DataObjects but as the way i see it Facebook comment system works on URL so every comment thread is attached to a specific url. We can also enhance this by making an option for logging in to the present commenting system using Facebook credentials and then posting comments(Disqus works in a similar way). I will check out the commenting system to work on the finer details

P.S. In the spreadsheet no mentor has shown interest in this project so wouldn't pursuing it be futile. Also, is there a preferential treatment to early application submitter.

Cheers,
Kamal

xeraa

unread,
Mar 26, 2012, 5:44:12 PM3/26/12
to silverst...@googlegroups.com
Hi Kamal,

Sounds good - just remember to write this down in a sensible form, so you can add a sensible description + schedule for the whole project in your proposal.

P.S. In the spreadsheet no mentor has shown interest in this project so wouldn't pursuing it be futile. Also, is there a preferential treatment to early application submitter.

We'll find a mentor - that shouldn't be your major concern. Focus on your proposal and we'll work out the organizational aspects on our end.

As far as I know time is not a factor (as long as you're sticking to the deadline). We're looking for the best proposals, not the quickest ;-).

Cheers,
Philipp

Kamal Joshi

unread,
Apr 3, 2012, 5:03:27 PM4/3/12
to silverst...@googlegroups.com
Hi Philipp,

i am still unclear on the selective post thing, is the feature of Facebook -> SS Site intended for Pages profiles more than person profiles? If it is intended for personal profiles then wouldn't we need to make a system to separate out the personal content from the content fit to be in the public site.

and also is the commenting system is to be replaced/enhanced(login functions) by the facebook one or should the facebook commenting system be implemented in the form of a widget so as to selectively allow the page admin to switch between the tow systems.

Cheers Kamal

xeraa

unread,
Apr 3, 2012, 9:40:40 PM4/3/12
to silverst...@googlegroups.com
Hi Kamal,


i am still unclear on the selective post thing, is the feature of Facebook -> SS Site intended for Pages profiles more than person profiles? If it is intended for personal profiles then wouldn't we need to make a system to separate out the personal content from the content fit to be in the public site.

IMHO this should work for personal profiles, but more importantly for pages like https://www.facebook.com/silverstripe (even though with the new timelime there doesn't seem to be much difference).
How would you filter the content for the public website from the stuff which you wouldn't want to publish? Provide an import page in the CMS where you can select what you should import and what you shouldn't?
There's no final plan for most of these questions - your input is important. Think about it, (ask if in doubt,) select the best approach, and provide arguments for your approach.
 
and also is the commenting system is to be replaced/enhanced(login functions) by the facebook one or should the facebook commenting system be implemented in the form of a widget so as to selectively allow the page admin to switch between the tow systems.

 My goal for FB comments:
* I want to have comments on my page (probably also DataObjects?)
* I don't want to have (too many) spam comments, so a valid user account is required
* I hate it, if I have to create an account for every single website - it would be much more convenient if I could reuse my FB account
Not sure if this is already (easily) possible with Will's module, if we want to extend SilverStripe's comment module (in SS3 this isn't part of core anymore), or if we want to use Facebook's comments as the only solution. Which one would you prefer and what are your arguments for / against it?

I hope I don't make this too complicated for you, but IMHO this isn't only about implementing something, but also about the approach.
Make assumptions and try to defend them - we'll probably discuss them later on and might find a different solution, but I want to encourage you to do more than simply implement something I tell you to ;-). And don't be afraid to do anything "wrong" - it's about an idea we want to form...

Cheers,
Philipp 

Kamal Joshi

unread,
Apr 4, 2012, 6:57:25 AM4/4/12
to silverst...@googlegroups.com
Do i have to give a timeline here also as few have done?
How much time should i leave for writing documentation, unit testing etc(things that are not core to the functionality)?

Cheers, Kamal

P.S. Can i apply for two ideas within the same organisation. 

xeraa

unread,
Apr 4, 2012, 8:02:15 AM4/4/12
to silverst...@googlegroups.com, in...@silverstripe.com
Hi Kamal,

Do i have to give a timeline here also as few have done?

No, you're not required - only if you want to discuss it. However, if you add you application early enough and we see any serious problems with it, we'll comment on Google's application form as well.
 
How much time should i leave for writing documentation, unit testing etc(things that are not core to the functionality)?

IMHO it's easiest if you do it besides implementing your project. So you might want to calculate an overhead of something like 20% during your project, plus a few days at the end to update and streamline your documentation and tests.

I think you can apply for more than one project of the same organization, but I'm not sure if this is a good idea or not.
On the one hand it might come in handy to have a backup project, if there are two very strong candidates for your first project but none for the second one. On the other hand it's IMHO a stronger indication to take you onboard if there's one project you'd absolutely love to do rather than have two which you both like.
But I'll CC Ingo, I think he can answer that better than me :-)

And please do apply for the Facebook project - we're looking for many great applications here!

Cheers,
Philipp

PS: I think you've asked about interface vs programming. There's now also a blog post by Sam explaining this a little better: http://www.silverstripe.org/duck-programming/

Ingo Schommer

unread,
Apr 4, 2012, 9:57:25 AM4/4/12
to silverst...@googlegroups.com
Hey Kamal,

You're welcome to lodge multiple applications, although
as Philipp said, we'd appreciate if you give us some indication on your preferences.

Thanks!
Ingo

Kamal Joshi

unread,
Apr 6, 2012, 6:01:22 AM4/6/12
to silverst...@googlegroups.com
Hi guys,
I have submitted my proposal
Can you have a look at it

Thanks,
Kamal

Kamal Joshi

unread,
Apr 6, 2012, 6:01:38 AM4/6/12
to silverst...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages