Summer of Code - Getting Started: Difference between revisions

Line 27: Line 27:
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, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure:
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, successful applicants will be familiar with or able to quickly learn about Octave's infrastructure:


* '''The Build System:''' [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.
* '''The Build System'''
 
: [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.
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. If you've ever done a <tt>configure && make && make install</tt> series of commands, you have already used 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.
 
: If you've ever done a <tt>configure && make && make install</tt> series of commands, you have already used the GNU build system.
* '''The Version Control System:''' We use [http://mercurial.selenic.com/ Mercurial] (abbreviated hg).
: '''You must demonstrate that you are able to build the development version of Octave from sources before the application deadline.'''
 
* '''The Version Control System'''
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.
: We use [http://mercurial.selenic.com/ 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.
* '''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 the same style for changes, commit messages, and so on.  You should also read the same [http://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html#Contributing-Guidelines contributing] [http://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING guidelines] we have for everyone.
: You will be helping current and future Octave developers by using the same style for changes, commit messages, and so on.  You should also read the same [http://www.gnu.org/software/octave/doc/interpreter/Contributing-Guidelines.html#Contributing-Guidelines contributing] [http://hg.savannah.gnu.org/hgweb/octave/file/tip/etc/HACKING guidelines] we have for everyone.
 
* '''The Maintainers Mailing List'''
* '''The Primary Mailing List for Developer Discussions''' We primarily use [https://mailman.cae.wisc.edu/listinfo/octave-maintainers mailing lists] for communication among developers.
: We primarily use [https://mailman.cae.wisc.edu/listinfo/octave-maintainers mailing lists] for communication among developers.
 
: The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.
The mailing list is used most often for discussions about non-trivial changes to Octave, or for setting the direction of development.
: You should follow basic mailing list etiquette. For us, this mostly means "do not [http://en.wikipedia.org/wiki/Top_posting#Top-posting top post]".
You should follow basic mailing list etiquette. For us, this mostly means "do not [http://en.wikipedia.org/wiki/Top_posting#Top-posting top post]".
* '''The IRC Channel'''
 
: We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].
* '''The IRC Channel''' We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode].
: You should be familiar with the IRC channel.  It's very helpful for new contributors (you) to get immediate feedback on ideas and code.
 
: Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.
You should be familiar with the IRC channel.  It's very helpful for new contributors (you) to get immediate feedback on ideas and code. Unless your primary mentor has a strong preference for some other method of communication, the IRC channel will likely be your primary means of communicating with your mentor and Octave developers.
* '''The Octave Forge Project'''
 
: [http://octave.sf.net Octave-Forge] is a project closely related to Octave where packages reside. They are somewhat analogous to Matlab's toolboxes.
* '''The Octave Forge Project''' [http://octave.sf.net Octave-Forge] is a project closely related to Octave where packages reside. They are somewhat analogous to Matlab's toolboxes.
* '''Related Skills'''
 
: In addition, you probably should know '''some''' mathematics, engineering, or experimental science or something of the sort.
* '''Related Skills''' In addition, you probably should know '''some''' mathematics, engineering, or experimental science or something of the sort.
: If you've used Matlab before, you probably have already been exposed to the kinds of problems that Octave is used for.
 
If you've used Matlab before, you probably have already been exposed to the kinds of problems that Octave is used for.


= Suggested projects =
= Suggested projects =