App: django- activity-stream As a Service: Horizon Activity Stream The Need Solutions Engineering Considerations The Problems The Activity Streams Specification
button” increases traffic* People like clicking things Seeing what others are doing is always super awesome *http:/ /thinktraffic.net/will-facebook-like-buttons-bring-more-visitors-to-your-site-think-traffic-monthly-report-8
App: django- activity-stream As a Service: Horizon Activity Stream The Need Solutions Engineering Considerations The Problems The Activity Streams Specification
App: django- activity-stream As a Service: Horizon Activity Stream The Need Solutions Engineering Considerations The Problems The Activity Streams Specification
the activity (eg user) Verb (required) Specifies the type of action which was done by the actor (eg liked) Action Object Primary object of the activity (eg photo) Target What the action object belongs to (eg album) Time, Title, Summary
App: django- activity-stream As a Service: Horizon Activity Stream The Need Solutions Engineering Considerations The Problems The Activity Streams Specification
project Django supported DB using GFKs Provides a way to render activity reprs via templates/feeds All generated at request time (caching is up to you) github.com/justquick/django-activity-stream
(datetime) - description (text) - public (bool) actor target action_object ACTION ANY MODEL - FK - GFK - started (datetime) FOLLOW follow_object ANY MODEL user AUTH/CUSTOM USER
App: django- activity-stream As a Service: Horizon Activity Stream The Need Solutions Engineering Considerations The Problems The Activity Streams Specification
<timestamp> updated: <timestamp> node edge type: Neo4j Native created: <timestamp> updated: <timestamp> api: <string> aid: <string> type: <applabel_modelname> created: <timestamp> updated: <timestamp> node we do not store any model data in the graph!
Not a dependency, but a recommendation Communication via message queue (eg kafka) Storm topologies: many different computation patterns Dump results into Redis to have cached responses
the spec Remember that actor_type and object_type are in “applabel_modelname” syntax Would return all activities done to an object by a specific type of actor (Useful for Counts)
Actor can take on an Object Sends activities over the wire to the Horizon service And displays some information about the state of that activity github.com/natgeo/modules-activitysnippet Snippet “Like Button”
App: django- activity-stream As a Service: Horizon Activity Stream The Need Solutions Engineering Considerations the problems The Activity Streams Specification
open source! Contribute! There’s a lot more we can do! We are also creating a django-horizon app github.com/natgeo/ modules-activitystream github.com/natgeo/ modules-activitysnippet github.com/natgeo/ activitystreams github.com/justquick/ django-activity-stream
http:/ /activitystrea.ms ! Other images released under various licenses: ! https:/ /www.flickr.com/photos/thomashawk/8562000383 (CC BY-NC 2.0) https:/ /www.flickr.com/photos/rikomatic/2784359847 (CC BY-NC-SA 2.0) https:/ /www.flickr.com/photos/ajc1/5058431577 (CC BY-NC-SA 2.0) https:/ /www.flickr.com/photos/bumi/2803382816 (CC BY-SA 2.0) https:/ /www.flickr.com/photos/_tar0_/5241548889 (CC BY 2.0) https:/ /www.flickr.com/photos/katerha/14310234256 (CC BY 2.0) https:/ /www.flickr.com/photos/quinnanya/8203757695 (CC BY-SA 2.0) http:/ /en.wikipedia.org/wiki/Infinite_monkey_theorem#mediaviewer/File:Monkey-typing.jpg (public domain via Wikimedia Commons) ! Cropping and resizing modifications were made to fit the presentation format.