{"action":"created","comment":{"url":"https://api.github.com/repos/numfocus/gsoc/pulls/comments/27159022","id":27159022,"diff_hunk":"@@ -0,0 +1,254 @@\n+#Result-aggregation server for the installation-test scripts\n+\n+##Personal Details:\n+\n+* Name: Yashasvi Girdhar\n+* Email: yash.girdhar@gmail.com\n+* Personal Webpage : http://about.me/yashgirdhar\n+* Github profile : https://github.com/itsyash\n+* IRC nick (on freenode) : yash_\n+* Telephone: +91-8143914414\n+* Country of residence: India\n+* Timezone: IST (GMT+5:30)\n+* Primary language: English\n+\n+##Abstract:\n+\n+Software Carpentry has installation-test scripts which are used by students to check if they have correctly installed the required software for a workshop.\n+\n+The script basically performs a test for each software and outputs the result. In case of a failure, it prints the cause of failure and some diagnostic information on how to install the software correctly.\n+Until now, we do not collect these results anywhere. But there are number of reasons why we should be doing that.\n+\n+Some sample queries that the system would serve will look like:\n+\n+* How many tests failed for a given workshop for students running Windows.\n+* What fraction of failed tests were on OS X for a specific time period.\n+* For a given workshop, find number of failed version tests for Git.\n+\n+Statistics like these will help us figure out more information about:\n+* How much trouble the students are having with the installation.\n+* Which dependencies need more of our attention (deprecating their older versions or adapting with the new versions).\n+\n+##Technical Details:\n+\n+The project is mainly divided into four phases:\n+\n+#### 1) A model for storing the data in a relational database.\n+\n+We start with deciding what information is useful and how should we store it. I have already built a first draft of the [schema](#schema) (added at the end of this proposal) with feedback from the mentor.\n+I would use SQLite database for storing the data.\n+\n+####  2) API to collect the results.\n+\n+This step involves designing an API on the server, so that students can submit their results through the installation-test scripts. The API would collect the results and store them in the relational database, conforming with the schema.\n+I would be using [Flask](http://flask.pocoo.org/) and [SQLAlchemy](http://www.sqlalchemy.org/) for this API. Flask is quite lightweight and flexible, and is powerful enough to provide us all what is needed by this project. Regarding SQLAlchemy, I haven't seen a more simple yet powerful SQL toolkit and ORM. The above is a tried and tested combination for API implementations.\n+\n+#### 3) Modifying the installation-test scripts to send data to the server.\n+Here, we send the required data to the server using the API. I have understood the script and submitted a [PR](https://github.com/wking/swc-setup-installation-test/pull/4) as well that adds a comment explaining the implementation details.\n+\n+#### 4) API to perform queries on the data (includes building an interface for the Software Carpentry admins)\n+\n+This phase mainly involves three steps:\n+* Designing an API to perform queries on the stored data.\n+* Building an interface for the target users to use the API, and\n+* Adding a data visualisation library for better viewing of the results.\n+\n+For constructing the queries, I plan on writing a custom UI in [AngularJS](https://angularjs.org/). \n+We want a simple and minimalistic interface that's easy to maintain in the long run. Angular conforms with all this requirements and is easy to learn.\n+\n+For data visualisation, I am still doing my research on various javascript libraries, but at present I am inclined towards [D3.js](http://d3js.org/) due to its wide acceptance and powerful features.","path":"2015/proposals/girdhar-yashasvi.md","position":59,"original_position":59,"commit_id":"b7855aa2c78aa0a32ed2762bf1acdc4c1d30311b","original_commit_id":"b7855aa2c78aa0a32ed2762bf1acdc4c1d30311b","user":{"login":"r-gaia-cs","id":1506457,"avatar_url":"https://avatars.githubusercontent.com/u/1506457?v=3","gravatar_id":"","url":"https://api.github.com/users/r-gaia-cs","html_url":"https://github.com/r-gaia-cs","followers_url":"https://api.github.com/users/r-gaia-cs/followers","following_url":"https://api.github.com/users/r-gaia-cs/following{/other_user}","gists_url":"https://api.github.com/users/r-gaia-cs/gists{/gist_id}","starred_url":"https://api.github.com/users/r-gaia-cs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/r-gaia-cs/subscriptions","organizations_url":"https://api.github.com/users/r-gaia-cs/orgs","repos_url":"https://api.github.com/users/r-gaia-cs/repos","events_url":"https://api.github.com/users/r-gaia-cs/events{/privacy}","received_events_url":"https://api.github.com/users/r-gaia-cs/received_events","type":"User","site_admin":false},"body":"\"javascript\" -> \"Javascript\"","created_at":"2015-03-25T19:54:48Z","updated_at":"2015-03-25T19:54:48Z","html_url":"https://github.com/numfocus/gsoc/pull/34#discussion_r27159022","pull_request_url":"https://api.github.com/repos/numfocus/gsoc/pulls/34","_links":{"self":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/comments/27159022"},"html":{"href":"https://github.com/numfocus/gsoc/pull/34#discussion_r27159022"},"pull_request":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/34"}}},"pull_request":{"url":"https://api.github.com/repos/numfocus/gsoc/pulls/34","id":31569990,"html_url":"https://github.com/numfocus/gsoc/pull/34","diff_url":"https://github.com/numfocus/gsoc/pull/34.diff","patch_url":"https://github.com/numfocus/gsoc/pull/34.patch","issue_url":"https://api.github.com/repos/numfocus/gsoc/issues/34","number":34,"state":"open","locked":false,"title":"Project proposal : Result-aggregation server for installation-test scripts","user":{"login":"itsyash","id":2319525,"avatar_url":"https://avatars.githubusercontent.com/u/2319525?v=3","gravatar_id":"","url":"https://api.github.com/users/itsyash","html_url":"https://github.com/itsyash","followers_url":"https://api.github.com/users/itsyash/followers","following_url":"https://api.github.com/users/itsyash/following{/other_user}","gists_url":"https://api.github.com/users/itsyash/gists{/gist_id}","starred_url":"https://api.github.com/users/itsyash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itsyash/subscriptions","organizations_url":"https://api.github.com/users/itsyash/orgs","repos_url":"https://api.github.com/users/itsyash/repos","events_url":"https://api.github.com/users/itsyash/events{/privacy}","received_events_url":"https://api.github.com/users/itsyash/received_events","type":"User","site_admin":false},"body":"Adding first draft of my proposal ","created_at":"2015-03-19T21:52:09Z","updated_at":"2015-03-25T19:54:48Z","closed_at":null,"merged_at":null,"merge_commit_sha":"507b60fabfd765227fa65e880b8aebb5f1dde26d","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/numfocus/gsoc/pulls/34/commits","review_comments_url":"https://api.github.com/repos/numfocus/gsoc/pulls/34/comments","review_comment_url":"https://api.github.com/repos/numfocus/gsoc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/numfocus/gsoc/issues/34/comments","statuses_url":"https://api.github.com/repos/numfocus/gsoc/statuses/b7855aa2c78aa0a32ed2762bf1acdc4c1d30311b","head":{"label":"itsyash:master","ref":"master","sha":"b7855aa2c78aa0a32ed2762bf1acdc4c1d30311b","user":{"login":"itsyash","id":2319525,"avatar_url":"https://avatars.githubusercontent.com/u/2319525?v=3","gravatar_id":"","url":"https://api.github.com/users/itsyash","html_url":"https://github.com/itsyash","followers_url":"https://api.github.com/users/itsyash/followers","following_url":"https://api.github.com/users/itsyash/following{/other_user}","gists_url":"https://api.github.com/users/itsyash/gists{/gist_id}","starred_url":"https://api.github.com/users/itsyash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itsyash/subscriptions","organizations_url":"https://api.github.com/users/itsyash/orgs","repos_url":"https://api.github.com/users/itsyash/repos","events_url":"https://api.github.com/users/itsyash/events{/privacy}","received_events_url":"https://api.github.com/users/itsyash/received_events","type":"User","site_admin":false},"repo":{"id":31591464,"name":"gsoc2015","full_name":"itsyash/gsoc2015","owner":{"login":"itsyash","id":2319525,"avatar_url":"https://avatars.githubusercontent.com/u/2319525?v=3","gravatar_id":"","url":"https://api.github.com/users/itsyash","html_url":"https://github.com/itsyash","followers_url":"https://api.github.com/users/itsyash/followers","following_url":"https://api.github.com/users/itsyash/following{/other_user}","gists_url":"https://api.github.com/users/itsyash/gists{/gist_id}","starred_url":"https://api.github.com/users/itsyash/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/itsyash/subscriptions","organizations_url":"https://api.github.com/users/itsyash/orgs","repos_url":"https://api.github.com/users/itsyash/repos","events_url":"https://api.github.com/users/itsyash/events{/privacy}","received_events_url":"https://api.github.com/users/itsyash/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/itsyash/gsoc2015","description":"Google Summer of Code 2015","fork":true,"url":"https://api.github.com/repos/itsyash/gsoc2015","forks_url":"https://api.github.com/repos/itsyash/gsoc2015/forks","keys_url":"https://api.github.com/repos/itsyash/gsoc2015/keys{/key_id}","collaborators_url":"https://api.github.com/repos/itsyash/gsoc2015/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/itsyash/gsoc2015/teams","hooks_url":"https://api.github.com/repos/itsyash/gsoc2015/hooks","issue_events_url":"https://api.github.com/repos/itsyash/gsoc2015/issues/events{/number}","events_url":"https://api.github.com/repos/itsyash/gsoc2015/events","assignees_url":"https://api.github.com/repos/itsyash/gsoc2015/assignees{/user}","branches_url":"https://api.github.com/repos/itsyash/gsoc2015/branches{/branch}","tags_url":"https://api.github.com/repos/itsyash/gsoc2015/tags","blobs_url":"https://api.github.com/repos/itsyash/gsoc2015/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/itsyash/gsoc2015/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/itsyash/gsoc2015/git/refs{/sha}","trees_url":"https://api.github.com/repos/itsyash/gsoc2015/git/trees{/sha}","statuses_url":"https://api.github.com/repos/itsyash/gsoc2015/statuses/{sha}","languages_url":"https://api.github.com/repos/itsyash/gsoc2015/languages","stargazers_url":"https://api.github.com/repos/itsyash/gsoc2015/stargazers","contributors_url":"https://api.github.com/repos/itsyash/gsoc2015/contributors","subscribers_url":"https://api.github.com/repos/itsyash/gsoc2015/subscribers","subscription_url":"https://api.github.com/repos/itsyash/gsoc2015/subscription","commits_url":"https://api.github.com/repos/itsyash/gsoc2015/commits{/sha}","git_commits_url":"https://api.github.com/repos/itsyash/gsoc2015/git/commits{/sha}","comments_url":"https://api.github.com/repos/itsyash/gsoc2015/comments{/number}","issue_comment_url":"https://api.github.com/repos/itsyash/gsoc2015/issues/comments{/number}","contents_url":"https://api.github.com/repos/itsyash/gsoc2015/contents/{+path}","compare_url":"https://api.github.com/repos/itsyash/gsoc2015/compare/{base}...{head}","merges_url":"https://api.github.com/repos/itsyash/gsoc2015/merges","archive_url":"https://api.github.com/repos/itsyash/gsoc2015/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/itsyash/gsoc2015/downloads","issues_url":"https://api.github.com/repos/itsyash/gsoc2015/issues{/number}","pulls_url":"https://api.github.com/repos/itsyash/gsoc2015/pulls{/number}","milestones_url":"https://api.github.com/repos/itsyash/gsoc2015/milestones{/number}","notifications_url":"https://api.github.com/repos/itsyash/gsoc2015/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/itsyash/gsoc2015/labels{/name}","releases_url":"https://api.github.com/repos/itsyash/gsoc2015/releases{/id}","created_at":"2015-03-03T09:57:23Z","updated_at":"2015-03-02T20:39:26Z","pushed_at":"2015-03-24T12:41:13Z","git_url":"git://github.com/itsyash/gsoc2015.git","ssh_url":"git@github.com:itsyash/gsoc2015.git","clone_url":"https://github.com/itsyash/gsoc2015.git","svn_url":"https://github.com/itsyash/gsoc2015","homepage":null,"size":186,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"numfocus:master","ref":"master","sha":"2c47a4f956aeb786127c8a2f346766a400fdcd39","user":{"login":"numfocus","id":1421094,"avatar_url":"https://avatars.githubusercontent.com/u/1421094?v=3","gravatar_id":"","url":"https://api.github.com/users/numfocus","html_url":"https://github.com/numfocus","followers_url":"https://api.github.com/users/numfocus/followers","following_url":"https://api.github.com/users/numfocus/following{/other_user}","gists_url":"https://api.github.com/users/numfocus/gists{/gist_id}","starred_url":"https://api.github.com/users/numfocus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/numfocus/subscriptions","organizations_url":"https://api.github.com/users/numfocus/orgs","repos_url":"https://api.github.com/users/numfocus/repos","events_url":"https://api.github.com/users/numfocus/events{/privacy}","received_events_url":"https://api.github.com/users/numfocus/received_events","type":"Organization","site_admin":false},"repo":{"id":30978155,"name":"gsoc","full_name":"numfocus/gsoc","owner":{"login":"numfocus","id":1421094,"avatar_url":"https://avatars.githubusercontent.com/u/1421094?v=3","gravatar_id":"","url":"https://api.github.com/users/numfocus","html_url":"https://github.com/numfocus","followers_url":"https://api.github.com/users/numfocus/followers","following_url":"https://api.github.com/users/numfocus/following{/other_user}","gists_url":"https://api.github.com/users/numfocus/gists{/gist_id}","starred_url":"https://api.github.com/users/numfocus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/numfocus/subscriptions","organizations_url":"https://api.github.com/users/numfocus/orgs","repos_url":"https://api.github.com/users/numfocus/repos","events_url":"https://api.github.com/users/numfocus/events{/privacy}","received_events_url":"https://api.github.com/users/numfocus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/numfocus/gsoc","description":"Numfocus Google Summer of Code Materials","fork":false,"url":"https://api.github.com/repos/numfocus/gsoc","forks_url":"https://api.github.com/repos/numfocus/gsoc/forks","keys_url":"https://api.github.com/repos/numfocus/gsoc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/numfocus/gsoc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/numfocus/gsoc/teams","hooks_url":"https://api.github.com/repos/numfocus/gsoc/hooks","issue_events_url":"https://api.github.com/repos/numfocus/gsoc/issues/events{/number}","events_url":"https://api.github.com/repos/numfocus/gsoc/events","assignees_url":"https://api.github.com/repos/numfocus/gsoc/assignees{/user}","branches_url":"https://api.github.com/repos/numfocus/gsoc/branches{/branch}","tags_url":"https://api.github.com/repos/numfocus/gsoc/tags","blobs_url":"https://api.github.com/repos/numfocus/gsoc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/numfocus/gsoc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/numfocus/gsoc/git/refs{/sha}","trees_url":"https://api.github.com/repos/numfocus/gsoc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/numfocus/gsoc/statuses/{sha}","languages_url":"https://api.github.com/repos/numfocus/gsoc/languages","stargazers_url":"https://api.github.com/repos/numfocus/gsoc/stargazers","contributors_url":"https://api.github.com/repos/numfocus/gsoc/contributors","subscribers_url":"https://api.github.com/repos/numfocus/gsoc/subscribers","subscription_url":"https://api.github.com/repos/numfocus/gsoc/subscription","commits_url":"https://api.github.com/repos/numfocus/gsoc/commits{/sha}","git_commits_url":"https://api.github.com/repos/numfocus/gsoc/git/commits{/sha}","comments_url":"https://api.github.com/repos/numfocus/gsoc/comments{/number}","issue_comment_url":"https://api.github.com/repos/numfocus/gsoc/issues/comments{/number}","contents_url":"https://api.github.com/repos/numfocus/gsoc/contents/{+path}","compare_url":"https://api.github.com/repos/numfocus/gsoc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/numfocus/gsoc/merges","archive_url":"https://api.github.com/repos/numfocus/gsoc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/numfocus/gsoc/downloads","issues_url":"https://api.github.com/repos/numfocus/gsoc/issues{/number}","pulls_url":"https://api.github.com/repos/numfocus/gsoc/pulls{/number}","milestones_url":"https://api.github.com/repos/numfocus/gsoc/milestones{/number}","notifications_url":"https://api.github.com/repos/numfocus/gsoc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/numfocus/gsoc/labels{/name}","releases_url":"https://api.github.com/repos/numfocus/gsoc/releases{/id}","created_at":"2015-02-18T17:54:16Z","updated_at":"2015-03-19T09:04:08Z","pushed_at":"2015-03-25T15:41:07Z","git_url":"git://github.com/numfocus/gsoc.git","ssh_url":"git@github.com:numfocus/gsoc.git","clone_url":"https://github.com/numfocus/gsoc.git","svn_url":"https://github.com/numfocus/gsoc","homepage":"http://numfocus.org/programs/gsoc.html","size":2347,"stargazers_count":5,"watchers_count":5,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":25,"mirror_url":null,"open_issues_count":17,"forks":25,"open_issues":17,"watchers":5,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/34"},"html":{"href":"https://github.com/numfocus/gsoc/pull/34"},"issue":{"href":"https://api.github.com/repos/numfocus/gsoc/issues/34"},"comments":{"href":"https://api.github.com/repos/numfocus/gsoc/issues/34/comments"},"review_comments":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/34/comments"},"review_comment":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/numfocus/gsoc/pulls/34/commits"},"statuses":{"href":"https://api.github.com/repos/numfocus/gsoc/statuses/b7855aa2c78aa0a32ed2762bf1acdc4c1d30311b"}}}}