{"id":195,"date":"2013-01-20T12:11:30","date_gmt":"2013-01-20T11:11:30","guid":{"rendered":"http:\/\/www.dereckson.be\/blog\/?p=195"},"modified":"2013-01-20T23:11:04","modified_gmt":"2013-01-20T22:11:04","slug":"gerrit-activity-feeds-a-design-and-infrastructure-sneak-peak","status":"publish","type":"post","link":"https:\/\/www.dereckson.be\/blog\/2013\/01\/20\/gerrit-activity-feeds-a-design-and-infrastructure-sneak-peak\/","title":{"rendered":"Gerrit activity feeds :: a design and infrastructure sneak peak"},"content":{"rendered":"<p>Gerrit provides nice views by changes, but doesn&#8217;t offer synthetic and consolidated views.<\/p>\n<p>Activity feeds will be timelines to offer these views;<\/p>\n<ul>\n<li>What are the users&#8217; last activities (commits, patchsets, merges) on Gerrit?<\/li>\n<li>What&#8217;s going on on the <code>mediawiki\/extensions\/SemanticMediaWiki <\/code>repository?<\/li>\n<\/ul>\n<p>Here the homepage dashboard:<\/p>\n<p><a href=\"http:\/\/tools.dereckson.be\/wikimedia\/dev\/feeds\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-196\" alt=\"GerritActivyFeeds\" src=\"https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/GerritActivyFeeds.jpg\" width=\"979\" height=\"796\" srcset=\"https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/GerritActivyFeeds.jpg 979w, https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/GerritActivyFeeds-300x243.jpg 300w, https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/GerritActivyFeeds-624x507.jpg 624w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/><\/a><\/p>\n<p>And here the wireframe of the project activity feed:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-203\" alt=\"ProjectActivityFeedWireframe\" src=\"https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/ProjectActivityFeedWireframe.png\" width=\"1011\" height=\"588\" srcset=\"https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/ProjectActivityFeedWireframe.png 1011w, https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/ProjectActivityFeedWireframe-300x174.png 300w, https:\/\/www.dereckson.be\/blog\/wp-content\/uploads\/2013\/01\/ProjectActivityFeedWireframe-624x362.png 624w\" sizes=\"auto, (max-width: 1011px) 100vw, 1011px\" \/><\/p>\n<p><strong>About the design<\/strong><\/p>\n<p>This code is built on the top of <a href=\"http:\/\/foundation.zurb.com\/\">Foundation<\/a>, a responsive CSS framework. This allows to provide a smooth experience for your phone or tablet: columns will collapse into a more linear view if resolution width is narrow.<\/p>\n<p>Avatars uses\u00a0<a href=\"https:\/\/en.gravatar.com\/\">Gravatar<\/a>. When an user doesn&#8217;t have a Gravatar account, <a href=\"http:\/\/en.wikipedia.org\/wiki\/Identicon\">identicons<\/a> are used.<\/p>\n<p><strong>About the infrastructure and code<\/strong><\/p>\n<p>A Node service acts as proxy, and mirrors the <a href=\"http:\/\/gerrit-documentation.googlecode.com\/svn\/Documentation\/2.4.2\/cmd-stream-events.html\">Gerrit events stream<\/a>, so it&#8217;s available to any simple TCP connexion instead to require a SSH connection.<\/p>\n<p>I&#8217;ll provide access to this Node server to the community, so any tool with socket and JSON support with be able to interact with Gerrit events. If you&#8217;ve a need for a push model, ie to post notifications, please let me know the format and I will take care of that.<\/p>\n<p>Then, a script reads the stream and write the XML feeds. It also monitors the Node -&gt; SSH connection, to relaunch the service if needed (e.g. if the Jenkins server is rebooted).\u00a0These XML feeds are publicly accessible, so you can also create a service based on them.<\/p>\n<p>Finally, <a href=\"https:\/\/developer.mozilla.org\/en\/docs\/XSLT\">XSLT<\/a> will be used to render these feeds in HTML and RSS documents. That&#8217;s for the humans and the most generic tools..<\/p>\n<p>It will be at this moment time to take care of special needs, like combined feeds for Google Summer of Code or the Outreach Program for Women.<\/p>\n<p><strong>What do you think of this and do you need?<br \/>\n<\/strong><\/p>\n<p>Please tell me what you think of this tool, and what you would like to find on this tool.<\/p>\n<p>We also need a cool name for the application.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gerrit provides nice views by changes, but doesn&#8217;t offer synthetic and consolidated views. Activity feeds will be timelines to offer these views; What are the users&#8217; last activities (commits, patchsets, merges) on Gerrit? What&#8217;s going on on the mediawiki\/extensions\/SemanticMediaWiki repository? Here the homepage dashboard: And here the wireframe of the project activity feed: About the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49,30],"tags":[82,84,81,83,274,85],"class_list":["post-195","post","type-post","status-publish","format-standard","hentry","category-dev","category-wikimedia","tag-design","tag-foundation","tag-gerrit","tag-node","tag-wikimedia","tag-wireframe"],"_links":{"self":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/comments?post=195"}],"version-history":[{"count":5,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/195\/revisions"}],"predecessor-version":[{"id":205,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/posts\/195\/revisions\/205"}],"wp:attachment":[{"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/media?parent=195"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/categories?post=195"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dereckson.be\/blog\/wp-json\/wp\/v2\/tags?post=195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}