Skip to content

Instantly share code, notes, and snippets.

@gwillcox-r7
Created November 16, 2022 16:43
Show Gist options
  • Save gwillcox-r7/e32bd000a2d5fdb84983266a4437dbcc to your computer and use it in GitHub Desktop.
Save gwillcox-r7/e32bd000a2d5fdb84983266a4437dbcc to your computer and use it in GitHub Desktop.
Getting Stared Contributing

Since we've had a few questions about contributing here I thought I'd throw up a quick reference guide that people can refer to. The following are some links to help you get started with contributing to Metasploit:

  1. Read over https://docs.metasploit.com/docs/development/get-started/. Particularly the parts on https://docs.metasploit.com/docs/development/get-started/setting-up-a-metasploit-development-environment.html for how to set up your Metasploit development environment and https://docs.metasploit.com/docs/development/get-started/creating-your-first-pr.html for how to make your first PR contribution.
  2. When you are starting off looking for issues to work on, take a look for the #easy or #newbie-friendly tags using https://github.com/rapid7/metasploit-framework/issues?q=is%3Aissue+is%3Aopen+label%3Aeasy and https://github.com/rapid7/metasploit-framework/issues?q=is%3Aissue+is%3Aopen+label%3Anewbie-friendly respectively. These issues have been specifically listed as being easier to start working on.
  3. You will likely want to use an IDE catered to Ruby for your development. RubyMine is the best option if you can afford it, otherwise I've written a tutorial on how to set up VS Code for a Metasploit workflow over at https://gist.github.com/gwillcox-r7/589c9b18639d3a3ae2f8a9f82876897e. Note that VS Code does not presently have some of the refactoring capabilities of RubyMine and is currently working on increasing its Rails support. For most operations though it should be comparable to RubyMine with the listed plugins.
  4. Install the SourceGraph browser extension at https://docs.sourcegraph.com/integration/browser_extension. It will help a lot when navigating code using GitHub.com and will allow you to see where things are referenced so you can establish if its part of an existing pattern as well as how the code is being used in general.
  5. If you want to learn more about Git take a look at some of Atlassian's great tutorials over at https://www.atlassian.com/git. For a more interactive tutorial on how Git's branching system works and how stuff like rebasing works, take a look at https://learngitbranching.js.org/?locale=en_US.
  6. If you are interested in learning Ruby there is a good course at https://www.udemy.com/course/learn-to-code-with-ruby-lang/. If you'd prefer a book rather, then https://www.manning.com/books/the-well-grounded-rubyist-third-edition is a good option and is frequently referred to.
  7. If you are planning to write library code you may also want to learn about RSpec. There is a good course on this over at https://www.udemy.com/course/testing-ruby-with-rspec/ that you can use to learn this, or books from resources like this one over at Pragmatic Bookshelf: https://pragprog.com/titles/rspec3/effective-testing-with-rspec-3/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment