Kyle Harms
Email: <kyle.harms@cornell.edu>
Shoheb Ome <so332@cornell.edu>
Students in INFO/CS 1300 and INFO/CS 2300 use Git for all their assignment submissions. Using Git has worked well in these classes with the exception of the initial configuration.
Git provides four protocols: _local_, HTTPS, SSH, and Git. GitHub supports HTTPS and SSH. I prefer the SSH protocol for my students. While SSH is initially more difficult to set up, the daily experience is often much smoother than HTTPS.
Initial set up requires each student to generate an SSH key at the command line using 'ssh-keygen'. Students frequently struggle with following instructions precisely and often fail to generate a key that will improve their Git experience. After generating their key, they need to upload the _public_ key to GitHub. Lastly, they need to test that their connection works.
The goal of this project is to develop a node.js package to streamline the creation of SSH keys and aide in uploading them to GitHub. While some node.js packages exist for SSH key creation, none provide a comprehensive solution that works across platforms reliably. For this project, robustness and extensive testing are primary objectives.
You will also develop a front-end user interface to the node.js package that does not require command line usage. You will build a basic plugin for Atom and VS Code that exposes the functionality of the node.js package within these tools.
Develop a node.js package that reliably supports SSH key generation across platforms.
You must test this extensively. This must work across operating systems reliably.
Develop an Atom plugin that calls the node.js package.
The plugin should support one command: **Generate SSH Key**
Once the command is triggered, prompt the user for any details needed and provide an efficient mechanism for uploading the SSH key to GitHub (via the node.js package).
Develop a VS Code plugin identical to the Atom plugin.
There should be minimal code written specifically for Atom and Code. Only the "hooks" and other required plugin architecture should be unique to each editor's plugin. All shared functionality should exist within the node.js package.
Document your experience developing "cross-editor" plugins.
I want to understand the differences between supporting both of these editors. You will produce a small report documenting your experience authoring a plugin for both tools. This report should include best practices for developing cross-editor plugins.
Development follows User Experience (UX) and Human-Computer Interaction (HCI) best practices.
As an HCI practitioner, I will help the project team with requirement. I will expect user testing to be conducted to ensure the target audience will be able to effectively generate SSH keys and test their GitHub set up.
I am a lecturer in Information Science at Cornell. I specialize in novice/end-user programming and HCI. I teach INFO/CS 1300 and INFO/CS 2300. The work done as part of this project will be used to help the students in these courses.