* Add pipeline to documentation homepage. * Fix for mobile devices. * Add little pipelines to go at the top of each page. * Overhaul index page. * Overhaul README to remove redundant material. * Add installation documentation. * Update pipelines. * Allow nesting of deeper details. * Add a pipeline to the top of the load/save page. * Add prerequisites link to main pipeline. * Add better but not finished sidebar. * Add a couple new documentation pages. * Fix URLs in svg. * Incremental checkin. * Fix Youtube URLs. * Incremental checkin. * Minor fixes. * Add first pass at evaluation/deployment pages. * Minor spacing and link fixes. * Flesh out a number of additional pages and write basic compilation documentation. * Fix some minor issues, and add Docker deployment page (not totally finished yet). * Add developer documentation landing page. * Hopefully getting close to the final set of changes here. * Remove this documentation for now. * Fix a few links, and the size of the sidebar. * Fix some additional links. * Fix a bunch more links. * Fix another link that now has a better place. * Refactor test-docs.sh to handle documentation that is a standalone program. * Fix file exclusions. * Fully qualify typename. * Update name of file. * Fix syntax error. * Remove files that are not meant to be compiled. * Also skip the quickstart. * Move quickstart entry to the top. * Remove gray coloring of binding documentation. * Update name of sidebar link. * Update to working link. * Fix Wikipedia anchor.
4.5 KiB
mlpack and Google Summer of Code
mlpack is a proud participant in Google Summer of Code. We have been a part of the program since 2013, with over 50 students accepted over the years for mlpack (all of whom succeeded in the program). Each year, we receive very many applications and it is a competitive process, so this page exists to help you determine if you could be a strong candidate.
How to be a good candidate
The two most important qualities that an mlpack GSoC candidate can possess is the ability to be self-sufficient and the willingness to learn.
Self-sufficiency is key because mentors have limited time and can’t put in as much time helping the student as the student is putting in. However, this of course does not mean that a student (or a prospective student) can never ask any questions! mlpack is a complex library and can sometimes take help and explanation to understand.
A willingness to learn is also important because virtually every potential project will require the student to become familiar with a new algorithm or C++ technique. mlpack is a complex library with many components and it is likely during your project that you might have to use or interact with some other part of the codebase.
Things to be familiar with
Of course, these are not the only important ingredients for a successful GSoC project. A student should ideally be familiar with
-
open source software development: opening pull requests, using git, opening issues. mlpack uses Github, which has great documentation. You can learn about the workflow using this link, if you are not already familiar.
-
using the development toolchain on your computer: you should be able to download and compile mlpack, make changes to the code, and recompile with the new changes. There is a guide for how to build mlpack and that would be a great place to get started. If you’re on Windows, then the Windows build guide could be very useful. See also the Community page for more information on getting started.
-
at least intermediate C++ knowledge: mlpack uses lots of different C++ paradigms including template metaprogramming, C++ features like rvalue references, and other strategies, in order to make the code fast. You should be at least familiar with some of these language features and what templates are, even if you have not used them in-depth, so that you can understand the mlpack codebase. Some examples of patterns that are often used inside of mlpack are SFINAE (example in mlpack, see std::enable_if usages), policy-based design, and compile-time class traits. Here are some other useful resources for learning template metaprogramming, and some useful reference books. If some of this sounds new to you, don’t feel overwhelmed; it’s not a necessity, but it is helpful. You should at least be prepared to learn about it!
-
project-specific knowledge: you’ll need to have an in-depth understanding of the specific project that you choose. If you’re not sure what project you want to work on, see the SummerOfCodeIdeas wiki page, which has ideas for GSoC projects that you might find interesting. But you aren’t required to do one of those projects; if you have another interesting idea, propose it and see if a mentor is interested in supervising the project! If you have any questions about a project, be aware that it’s possible that the question has already been answered on Github. Take a look through the closed issues or search to see if there’s already an answer to your question. Get involved!
For a strong proposal, it’s important to be a part of the mlpack community, via contributions, code reviews, helping others solve their issues, and so forth. There are some pointers on the community page on how to start contributing and get involved.
When it comes time to write your proposal, we do have a proposal guide that you can take a look at to guide your application.