Summer of Code - Getting Started: Difference between revisions

Line 15: Line 15:
= General Guidelines =
= General Guidelines =


Octave is mostly written in C++ and its own scripting language that is mostly compatible with Matlab. Additionally, 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 should probably be familiar or 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:


* [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.
* '''The Build System:''' [http://en.wikipedia.org/wiki/GNU_build_system The GNU build system] is used to build Octave.
* [http://mercurial.selenic.com/ Mercurial] (abbreviated hg) 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.
 
* 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.
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.
* We primarily use [https://mailman.cae.wisc.edu/listinfo/octave-maintainers mailing lists] for communication. 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]".
 
* We also have [http://webchat.freenode.net?channels=octave the #octave IRC channel in Freenode]. The atmosphere is more relaxed, and we may talk about things that are not at all related to Octave.
* '''The Version Control System:''' We use [http://mercurial.selenic.com/ Mercurial] (abbreviated hg).
* [http://octave.sf.net Octave-Forge] is a project closely related to Octave where packages reside. They are somewhat analogous to Matlab's toolboxes.
 
* 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.
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 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 Primary Mailing List for Developer Discussions''' 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.
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].
 
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.
 
* '''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.


= Suggested projects =
= Suggested projects =