Coder Social home page Coder Social logo

QuickFeed: Instant Feedback on Programming Assignments

Go Test Go Report Card Codecov golangci-lint

Documentation

Install Development Tools

On Unix systems with homebrew you should be able to install development tools using:

% make brew
% make devtools
# Make sure the bin folder with our tools is in your PATH.
% export PATH=$PATH:$PWD/bin

For non-brew users, please inspect the Makefile to determine instructions for your system.

Contributing

The following instructions assume you have installed the GitHub CLI. See here for installation instructions for your platform.

Further, we require that code is formatted according to the rules and extensions that have been configured for VSCode. When opening VSCode, please install the recommended extensions for QuickFeed; see also style guidelines below. Specifically, you will need to install the clang-format tool to edit .proto files, and the golangci-lint tool to edit .go files.

Create Issue First

Before you implement some feature or bug fix, you should open an issue first. This issue should then be linked in the corresponding pull request.

Create Pull Request

Before starting a new pull request, either clone the repo:

% gh repo clone quickfeed/quickfeed
% cd quickfeed

Or if you have already cloned, make sure to start from an up-to-date master branch:

# Make sure to start from master branch
% git checkout master
# Make sure your master branch is up-to-date
% git pull

To create a pull request on the main repository follow these steps.

# Create and switch to your new feature branch
% git switch -C <feature-branch>
# Edit and stage files
% git add <files>
% git commit
# When done and ready to share
% gh pr create --title "Short description of the feature or fix"
# Alternatively: Use --draft if you want to share your code, but want to continue developing
% gh pr create --draft --title "Short description of the feature or fix"

To continue development on a pull request (same branch as before):

# Only necessary if you previously switched away from the feature-branch
% git switch <feature-branch>
# Edit and stage files
% git add <files>
% git commit
% git push

To fetch an existing pull request to your local machine.

% gh pr checkout <PR#>

For additional details on the gh pr and gh pr create commands:

% gh help pr
% gh help pr create

GitHub Issues and Pull Requests

When creating a pull request, it is always nice to connect it to a GitHub issue describing the feature or problem you are fixing. If there is an issue that is fixed by your pull request please remember to add one of the following lines at the end of the pull request description.

Closes <Issue#>.
Fixes <Issue#>.
Resolves <Issue#>.

For detailed instructions on configuring QuickFeed for development, please see our Developer Guide.

Style Guidelines

We chose to implement QuickFeed in Go and Typescript because these languages offer simplicity and type safety. We therefore require that certain style guidelines are followed when creating pull requests.

For Go, we expect code to follow these style guidelines and list of common mistakes:

For Typescript, we think these style guidelines look reasonable. Moreover, the formatOnSave and tslint.run options in VSCode should help maintain reasonable style.

Note that we currently violate the interface naming guideline by using the I prefix on some interfaces, and several of the other guidelines. We have started to rename these interfaces, and will eventually rename all such interfaces.

quickfeed's Projects

helpbot icon helpbot

A discord bot to help teaching assistants keep track of students who need help

quickfeed icon quickfeed

QuickFeed server and web frontend for instant feedback on programming assignments

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.