Summer of Code - Getting Started: Difference between revisions

Line 39: Line 39:
GNU Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, you as successful applicant will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project 😇
GNU Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. There are bits and pieces of Fortran, Perl, C, awk, and Unix shell scripts here and there. In addition to being familiar with C++ and Octave's scripting language, you as successful applicant will be familiar with or able to quickly learn about Octave's infrastructure. You can't spend the whole summer learning how to build Octave or prepare a changeset and still successfully complete your project 😇


* '''The Build System'''
You should know:
*: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.
# How to build Octave from it's source code using [http://en.wikipedia.org/wiki/GNU_build_system the GNU build system].
*: While you generally don't need to understand too much unless you actually want to change how Octave is built, you should be able to understand enough to get a general idea of how to build Octave.
#* Read in this wiki: [[Developer FAQ]], [[Building]]
*: If you've ever done a {{Codeline|./configure && make && make install}} series of commands, you have already used the GNU build system.
#* Tools to know: [https://en.wikipedia.org/wiki/GNU_Compiler_Collection gcc], [https://en.wikipedia.org/wiki/Make_(software) make]
*: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.''' Linux is arguably the easiest system to work on. Instructions:
# How to submit patches (changesets).
*:* [[Building]]
#* Read in this wiki: [[Contribution guidelines]], [[Mercurial]]
*:* [https://octave.org/doc/interpreter/Installation.html Octave Manual on Installing Octave]
#* Tools to know: [https://en.wikipedia.org/wiki/Mercurial Mercurial (hg)], [https://en.wikipedia.org/wiki/Git git]
* '''The Version Control System'''
*: We use [https://www.mercurial-scm.org/ Mercurial] (abbreviated hg).
*: Mercurial is the [http://en.wikipedia.org/wiki/Distributed_Version_Control_System distributed version control system] (DVCS) we use for managing our source code. You should have some basic understanding of how a DVCS works, but hg is pretty easy to pick up, especially if you already know a VCS like git or svn.
* '''The Procedure for Contributing Changesets'''
*: You will be expected to follow the same procedures as other contributors and core developers.
*: You will be helping current and future Octave developers by using our standard style for changes, commit messages, and so on.  You should also read the same [[Contribution guidelines | contribution]] [https://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING.md guidelines] we have for everyone.
*: [[Hg_instructions_for_mentors#Mercurial_Tips_for_SoC_students | This page]] describes the procedures students are expected to use to publicly display their progress in a public mercurial repo during their work.


= Suggested projects =
= Suggested projects =