{"action":"created","issue":{"url":"https://api.github.com/repos/swcarpentry/gsoc2015/issues/3","labels_url":"https://api.github.com/repos/swcarpentry/gsoc2015/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/swcarpentry/gsoc2015/issues/3/comments","events_url":"https://api.github.com/repos/swcarpentry/gsoc2015/issues/3/events","html_url":"https://github.com/swcarpentry/gsoc2015/issues/3","id":58270397,"number":3,"title":"Write a result-aggregation server for the installation-test scripts","user":{"login":"wking","id":209920,"avatar_url":"https://avatars.githubusercontent.com/u/209920?v=3","gravatar_id":"","url":"https://api.github.com/users/wking","html_url":"https://github.com/wking","followers_url":"https://api.github.com/users/wking/followers","following_url":"https://api.github.com/users/wking/following{/other_user}","gists_url":"https://api.github.com/users/wking/gists{/gist_id}","starred_url":"https://api.github.com/users/wking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wking/subscriptions","organizations_url":"https://api.github.com/users/wking/orgs","repos_url":"https://api.github.com/users/wking/repos","events_url":"https://api.github.com/users/wking/events{/privacy}","received_events_url":"https://api.github.com/users/wking/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/swcarpentry/gsoc2015/labels/student-needed","name":"student-needed","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-02-19T21:11:53Z","updated_at":"2015-03-03T17:11:22Z","closed_at":null,"body":"## Background\r\n\r\n[Software Carpentry has][1] [installation-test scripts][2] so students can check that they've successfully installed any software required by their workshop.  However, we don't collect the results of student tests, which makes a number of things more difficult than they need to be.  Statistics about installed versions would make it easy to:\r\n\r\n* Figure out how much trouble our students are having with installation (for a given workshop or in general).\r\n* Make informed decisions about deprecating older versions of our various dependencies (see swcarpentry/bc#724, swcarpentry/sql-novice-survey#13, swcarpentry/git-novice#32, and [here][3]) or modernizing our lessons to catch up with current systems (see swcarpentry/workshop-template#157 and swcarpentry/workshop-template#159).\r\n\r\n## Approach\r\n\r\nThis project would:\r\n\r\n* Create a model for installed packages, failed package checks, and diagnostic system information.\r\n* Design an API so clients can submit the results of their installation-test script.\r\n* Write a small server to serve the API, store the results in a relational database, and allow administators to analyze the content.\r\n* Update the installation-test scripts to (optionally) submit their results to the new server.\r\n\r\nI'm not particular about the web framework you use to write the server, but I have the most experience with [Django][] and [Flask][].  If you prefer a different framework, I'm fine with anything that takes care of the boilerplate and lets you focus on the high-level tasks.\r\n\r\n## Challenges\r\n\r\nDesigning and implementing a simple API for storing test results, error messages, diagnostic system information, etc.  We want a robust, flexible system that's small and easy to maintain going forward.\r\n\r\n## Involved toolkits or projects\r\n\r\n* Python, for extending the existing installation test scripts.\r\n* A web framework like [Django][], [Flask][], [RoR][], [Express][], ...\r\n* Relational database management systems (RDBMS) including MySQL, PostgreSQL, SQLite.\r\n\r\n## Degree of difficulty and needed skills\r\n\r\n* Moderate difficulty.  This will be a simple server application, but you'll be designing and writing it from scratch.\r\n* Knowledge of Python, to write client-side code for the installation test scripts.\r\n* Knowledge of a web framework and basic API design.\r\n* Knowledge of relational databases or a wrapping library for storing the results.\r\n\r\nAny of these skills could be learned during the project, but you probably can't learn *all* of them during the project ;).\r\n\r\n## Involved developer communities\r\n\r\nThe Software Carpentry community primarily interacts via [issues and pull requests on\r\nGitHub][github] and the [`discuss@` mailing list][discuss].  There's also [an IRC channel][irc].\r\n\r\n## Mentors\r\n\r\n* @wking\r\n\r\n## Acknowlegements\r\n\r\nThanks to @xuf12 for the initial idea behind this project.\r\n\r\n[1]: https://github.com/swcarpentry/workshop-template/tree/gh-pages/setup\r\n[2]: https://github.com/wking/swc-setup-installation-test\r\n[3]: https://github.com/swcarpentry/git-novice/pull/43#issuecomment-74177654\r\n[Django]: https://www.djangoproject.com/\r\n[Flask]: http://flask.pocoo.org/\r\n[RoR]: http://rubyonrails.org/\r\n[Express]: http://expressjs.com/\r\n[github]: https://github.com/swcarpentry\r\n[discuss]: http://software-carpentry.org/pages/join.html\r\n[irc]: http://www.mozillascience.org/join-the-sciencelab-on-irc\r\n"},"comment":{"url":"https://api.github.com/repos/swcarpentry/gsoc2015/issues/comments/76988621","html_url":"https://github.com/swcarpentry/gsoc2015/issues/3#issuecomment-76988621","issue_url":"https://api.github.com/repos/swcarpentry/gsoc2015/issues/3","id":76988621,"user":{"login":"wking","id":209920,"avatar_url":"https://avatars.githubusercontent.com/u/209920?v=3","gravatar_id":"","url":"https://api.github.com/users/wking","html_url":"https://github.com/wking","followers_url":"https://api.github.com/users/wking/followers","following_url":"https://api.github.com/users/wking/following{/other_user}","gists_url":"https://api.github.com/users/wking/gists{/gist_id}","starred_url":"https://api.github.com/users/wking/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wking/subscriptions","organizations_url":"https://api.github.com/users/wking/orgs","repos_url":"https://api.github.com/users/wking/repos","events_url":"https://api.github.com/users/wking/events{/privacy}","received_events_url":"https://api.github.com/users/wking/received_events","type":"User","site_admin":false},"created_at":"2015-03-03T17:11:22Z","updated_at":"2015-03-03T17:11:22Z","body":"On Tue, Mar 03, 2015 at 01:56:43AM -0800, yashasvi girdhar wrote:\n> I am Yashasvi, ...\n\nGood to meet you, Yashasvi :).\n\n> I am assuming this is the right place to discuss more about this\n> project.\n\nYup.\n\n> If possible, I would like to discuss more specifically about the\n> project, so that I can build a clear timeline for the project for\n> the purpose of my proposal.\n\nI think what parts get implemented when will depend on the student's\nprevious experience.  If you're comfortable with a particular web\nframework already, it shouldn't take too long to knock out the\naggregator.  If you're new to writing web services, it will take a bit\nmore time ;).  If you sketch out your background a bit, focusing on\nthe tools and skills listed in the project idea above, it will help me\nget a sense of how the project might develop for you.  If you have\nquestions about the current idea description, please ask :).\n"}}