FAQ: Difference between revisions

Jump to navigation Jump to search
504 bytes removed ,  28 July 2017
→‎General: Overhaul section, update links, etc.
(→‎General: Overhaul section, update links, etc.)
Line 11: Line 11:
==What is Octave?==
==What is Octave?==


GNU Octave is a high-level interactive language, primarily intended for numerical computations, that is mostly compatible with Matlab.
[https://www.gnu.org/software/octave/ GNU Octave] is a high-level interpreted language, primarily intended for numerical computations.  It provides capabilities for the numerical solution of linear and nonlinear problems, and for performing other numerical experiments.  It also provides extensive graphics capabilities for data visualization and manipulation.  GNU Octave is normally used through its interactive interface ([https://en.wikipedia.org/wiki/Command-line_interface CLI] and [https://en.wikipedia.org/wiki/Graphical_user_interface GUI]), but it can also be used to write non-interactive programs.
The GNU Octave language is quite similar to Matlab so that most programs are easily portable.


GNU Octave can do arithmetic for real, complex or integer-valued scalars and matrices, solve sets of nonlinear algebraic equations, integrate functions over finite and infinite intervals, and integrate systems of ordinary differential and differential-algebraic equations.
The GNU Octave distribution includes a [http://www.octave.org/octave.pdf 1000+ page Texinfo manual]. Access to the complete text of the manual is available via the <code>doc</code> command at the GNU Octave prompt.
 
GNU Octave uses the GNU readline library to handle reading and editing input. By default, the line editing commands are similar to the cursor movement commands used by GNU Emacs, and a vi-style line editing interface is also available. At the end of each session, the command history is saved, so that commands entered during previous sessions are not lost.
 
The GNU Octave distribution includes a 650+ page Texinfo manual. Access to the complete text of the manual is available via the doc command at the GNU Octave prompt.


==What is Octave-Forge?==
==What is Octave-Forge?==


[https://octave.sourceforge.io/ Octave-Forge] is a collection of packages for GNU Octave, something similar to the Matlab toolboxes. When talking about the two projects at the same time, GNU Octave is usually referred to as Octave core (or just ''core''). [https://octave.sourceforge.io/ Octave-Forge] also serves as a test bed for code that may eventually end up in the core, and distributes binaries for systems with a lack of developers tools (mainly Windows).
[https://octave.sourceforge.io/ Octave-Forge] is a collection of [[packages]] for GNU Octave, something similar to the Matlab toolboxes. When talking about the two projects at the same time, GNU Octave is usually referred to as Octave core (or just "core"). Octave-Forge also serves as a test bed for code that may eventually end up in the core, and distributes binaries for systems with a lack of developers tools (mainly Windows).


==Who uses Octave?==
==Who uses Octave?==


Lots of people. It seems that universities use it for research and teaching, companies of all sizes, for development, individuals. This question comes often on Octave mailing lists, see [[Who Uses Octave?]] for a few answers
Lots of people. Universities use it for research and teaching, companies of all sizes for development, and individuals for whatever private purpose. See [[Who Uses Octave?]] for a few answers.


==Who develops Octave?==
==Who develops Octave?==


Discussions about writing the software that would eventually become Octave started in about 1988 with James B. Rawlings and John W. Eaton at the University of Texas. John W. Eaton was the original author of Octave, starting full-time development in February 1992. He is still the primary maintainer. The community of users/developers has in addition contributed some code and fuels the discussion on the mailing lists help@octave.org (user forum), maintainers@octave.org (development issues).
Discussions about writing the software that would eventually become Octave started in about 1988 with James B. Rawlings and [http://jweaton.org/ John W. Eaton] at the University of Texas. John W. Eaton is the original author of Octave, starting full-time development in February 1992. He is still the primary maintainer. The community of users and developers has in addition contributed some code and fuels the discussion on the mailing lists [https://lists.gnu.org/mailman/listinfo/help-octave help@octave.org] (user forum), [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers@octave.org] (development issues).


==Why "Octave"?==
==Why "Octave"?==


Octave's name has nothing to do with music. It's named after [http://en.wikipedia.org/wiki/Octave_Levenspiel Octave Levenspiel], a former professor of John who was famous for his ability to do quick back-of-the-envelope calculations. You can hear John pronounce the name "Octave" a few times [http://videolectures.net/mloss08_eaton_oct/ in this video]. We hope that GNU Octave will help perform computations with the same ease as Dr. Levenspiel.
Octave's name has nothing to do with music. It is named after [http://en.wikipedia.org/wiki/Octave_Levenspiel Octave Levenspiel], a former professor of John who was famous for his ability to do quick back-of-the-envelope calculations. You can hear John pronounce the name "Octave" a few times [http://videolectures.net/mloss08_eaton_oct/ in this video]. We hope that GNU Octave will help perform computations with the same ease as Dr. Levenspiel.
 
==Why <em>GNU</em> Octave?==


The GNU Project was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system.
==Why "GNU" Octave?==


GNU is a recursive acronym for “GNU's Not Unix”; it is pronounced g'noo, [https://www.gnu.org/gnu/pronunciation.en.html like “grew” but with the letter “n” instead of “r”].
The [https://www.gnu.org/ GNU Project] was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system.  GNU is a recursive acronym for "GNU's Not Unix"; it is pronounced [https://www.gnu.org/gnu/pronunciation.en.html g'noo].


The Free Software Foundation (FSF) is the principal organizational sponsor of the GNU Project.
The [https://www.fsf.org/ Free Software Foundation (FSF)] is the principal organizational sponsor of the GNU Project.


Octave became GNU Octave in 1997 (beginning with version 2.0.6). This meant agreeing to consider Octave a part of the GNU Project and support the efforts of the FSF. A big part of this effort is to adhere to the [http://www.gnu.org/prep/standards/standards.html GNU coding standards] and to benefit from GNU's infrastructure (e.g. [http://hg.savannah.gnu.org/hgweb/octave/ code hosting] and [http://bugs.octave.org bug tracking]). Additionally, Octave receives [https://my.fsf.org/donate/working-together/octave sponsorship] from the FSF's Working Together fund. However, Octave is not and has never been developed by the FSF.
Octave became GNU Octave in 1997 (beginning with [[Release History|version 2.0.6]]). This meant agreeing to consider Octave a part of the GNU Project and support the efforts of the FSF. A big part of this effort is to adhere to the [https://www.gnu.org/prep/standards/standards.html GNU coding standards] and to benefit from GNU's infrastructure (e.g. [https://hg.savannah.gnu.org/hgweb/octave/ code hosting] and [http://bugs.octave.org bug tracking]). Additionally, Octave receives [https://my.fsf.org/donate/working-together/octave sponsorship] from the FSF's Working Together fund. However, Octave is not and has never been developed by the FSF.
 
For more information about the GNU project, see http://www.gnu.org.


==What version should I use?==
==What version should I use?==


In general, you will find the latest version on http://www.octave.org/download.html. It is recommended to use the stable version of octave for general use, and the development version if you want the latest features and are willing to tolerate instability.
For general use, it is recommended to use the latest stable version of Octave (currently {{Release}}), available from http://www.octave.org/download.html. For development and bleeding-edge features one can obtain the development source code from the Mercurial repository https://hg.savannah.gnu.org/hgweb/octave/graph/.


A list of user-visible changes since the last release is available in the file NEWS. The file ChangeLog in the source distribution contains a more detailed record of changes made since the last release.
The used version of Octave is available via the <code>ver</code> command and a list of user-visible changes since the last release is available via the <code>news</code> command at the GNU Octave prompt.


==On what platforms does Octave run?==
==On what platforms does Octave run?==


Octave runs on various Unices—at least Linux and Solaris, Mac OS X, Windows and anything you can compile it on. Binary distributions exist at least for Debian, SUSE, Fedora and RedHat Linuxes (Intel and AMD CPUs, at least), for Mac OS X and Windows' 98, 2000, XP, Vista, and 7.
Octave runs on any platform you can compile it on. Binary distributions exist for [[Octave for GNU/Linux|GNU/Linux]], [[Octave for macOS|macOS]], and [[Octave for Microsoft Windows|Windows]]. To work fully functional, Octave requires the used platform to support the underlying numerical libraries like [https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms BLAS], [https://en.wikipedia.org/wiki/LAPACK LAPACK], [http://www.suitesparse.com SuiteSparse], etc., and for plotting [https://www.opengl.org/ OpenGL] or [http://www.gnuplot.info/ gnuplot].
 
Two and three dimensional plotting is fully supported using gnuplot and an experimental OpenGL backend.
 
The underlying numerical solvers are currently standard Fortran ones like LAPACK, LINPACK, ODEPACK, the BLAS, etc., packaged in a library of C++ classes. If possible, the Fortran subroutines are compiled with the system's Fortran compiler, and called directly from the C++ functions. If that's not possible, you can still compile Octave if you have the free Fortran to C translator f2c.
 
Octave is also free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3, as published by the Free Software Foundation, or at your option any later version.


== How can I cite Octave? ==
== How can I cite Octave? ==


Octave is free software and does not legally bind you to cite it.  However,
Octave is free software and does not legally bind you to cite it.  However, we have invested a lot of time and effort in creating GNU Octave, and we would appreciate if you would cite if you used. To cite GNU Octave in publications use:
we have invested a lot of time and effort in creating GNU Octave, and we
would appreciate if you would cite if you used.


Run {{codeline|citation}} at the Octave prompt for details on how to best
  John W. Eaton, David Bateman, Søren Hauberg, Rik Wehbring (2017).
cite the Octave version you are running. Certain Octave packages also have
  GNU Octave version {{Release}} manual: a high-level interactive language for numerical computations.
recommended citations in which case use {{codeline|citation package_name}}.
  URL https://www.gnu.org/software/octave/doc/v{{Release}}/


Ideally, you should cite the software itself, not a book or manual, like so:
A [https://en.wikipedia.org/wiki/BibTeX BibTeX] entry for [https://en.wikipedia.org/wiki/LaTeX LaTeX] users is:


   @software{octave,
   @manual{,
     author = {John W. Eaton and others},
    title    = {{GNU Octave} version {{Release}} manual: a high-level interactive language for numerical computations},
     title = {GNU Octave},
     author   = {John W. Eaton and David Bateman and S{\o}ren Hauberg and Rik Wehbring},
     url = {http://www.octave.org},
     year      = {2017},
    version = {4.0.0},
     url       = {https://www.gnu.org/software/octave/doc/v{{Release}}/},
    date = {2015-05-27},
   }
   }


It is recommended to do so on a first draft submittedHowever, some editors
Run <code>citation</code> at the Octave prompt for details on how to best cite the Octave version you are runningCertain Octave packages also have recommended citations in which case use <code>citation package_name</code>.
may disallow this, in which case you can still make a general reference
to Octave in the text, such as:


<blockquote>
Note that there are two reasons for citing the software used.  One is giving recognition to the work done by others which we already addressed.  The other is giving details on the system used so that experiments can be replicated.  For this, you should cite the version of Octave and all packages used (you can get this information using the <code>ver</code> command), as well as any details of your setup as part of your Methods.  In addition, you should make your source available.  See [http://software.ac.uk/so-exactly-what-software-did-you-use How to cite and describe software] for more details and an in depth discussion.
This work made use of the free software package GNU Octave, and the authors are grateful for the support of the Octave development community.
</blockquote>


If a more traditional reference is required, there is also a manual for each
==When will feature X be released or implemented?==
Octave release that can be cited:
 
  @book{,
    author    = {John W. Eaton, David Bateman, S\oren Hauberg, and Rik Wehbring},
    title    = {{GNU Octave} version 4.0.0 manual: a high-level interactive language for numerical computations},
    year      = {2015},
    url      = {http://www.gnu.org/software/octave/doc/interpreter},
  }
 
Note that there are two reasons for citing the software used.  One is giving
recognition to the work done by others which we already addressed. The other
is giving details on the system used so that experiments can be replicated.
This is just as important, if not more.


For this, you should cite the version of Octave and all packages used, as
When it's ready, sooner [http://www.octave.org/get-involved.html if you help]. You can [https://savannah.gnu.org/patch/?group=octave send us patches] if you can implement feature X yourself. If you can't, some [http://www.octave.org/commercial-support.html developers may be convinced to work on your specific problem for some money].
well as any details of your setup as part of your Methods.  In addition,
you should make your source available.  See
[http://software.ac.uk/so-exactly-what-software-did-you-use How to cite and describe software]
for more details and an in depth discussion.
 
==When will feature X be released or implemented?==
When it's ready, sooner if you help. Send us patches if you can. We like patches. If you can't, some developers may be convinced to work on your specific problem for some money.


==How can I get involved in Octave development?==
==How can I get involved in Octave development?==


Be around. Be social. Participate in the [https://mailman.cae.wisc.edu/listinfo/help-octave help]
Be around. Be social. Participate in our mailing lists [https://lists.gnu.org/mailman/listinfo/help-octave help@octave.org] and [https://lists.gnu.org/mailman/listinfo/octave-maintainers maintainers@octave.org].  Find things about Octave you don't like, and start thinking about how to fix them. Many people who now contribute to Octave first spent several years helping in the mailing list before they started to delve into the code. A good way to learn Octave is to understand the problems other people are having with it, so being helpful in the mailing lists not only helps Octave as a whole, but it also prepares you to be a better Octave contributor.
and [https://mailman.cae.wisc.edu/listinfo/octave-maintainers maintainers]
mailing lists.  Find things about Octave you don't like, and start thinking
about how to fix them. Many people who now contribute to Octave first spent
several years helping in the mailing list before they started to delve into
the code. A good way to learn Octave is to understand the problems other
people are having with it, so being helpful in the mailing lists not only
helps Octave as a whole, but it also prepares you to be a better Octave
contributor.


If you feel ready to dive right into the code, read [[Hacking | here]]
If you feel ready to dive right into the code, read the [[Developers]] wiki page or [http://www.octave.org/get-involved.html start here].  But do not send an email to the mailing lists listing your skills and offering to help.  We won't just suggest things for you to do. We lack volunteers and we do need your help, but because of that, we also lack the time to provide good guidance and mentoring.  If there is a specific short-term project you would like to work on, say so, and just do it.  Then ask for help or advice when you're doing it.  It is a lot more important that you do something that you're actually interested on than something we suggested because it only matches your skills.
and [http://www.gnu.org/software/octave/get-involved.html here] for
guidance.  But do not send an email to the mailing lists listing your
skills and offering to help.  We won't just suggest things for you to do.
We lack volunteers and we do need your help, but because of that, we also
lack the time to provide good guidance and mentoring.  If there is a
specific short-term project you would like to work on, say so, and just
do it.  Then ask for help or advice when you're doing it.  It is a lot
more important that you do something that you're actually interested on
than something we suggested because it only matches your skills.


We also need help with this wiki and the
We also need help with this wiki and the [http://www.octave.org/doc/interpreter/ manual]. These are also important tasks. The documentation is easy to patch, and the help text for individual functions even more so. Editing this wiki is even easier.
[http://www.gnu.org/software/octave/doc/interpreter/ manual]. These are
also important tasks. The documentation is easy to patch, and the help text
for individual functions even more so. Editing this wiki is even easier.


Accurate bug reporting is also very useful. Find and report
Accurate bug reporting is also very useful. Find and report [http://bugs.octave.org/ bugs], making an attempt to diagnose them. Eventually, you will also know how to fix them. If you want to help with bug reports or patches, subscribe to the [https://lists.gnu.org/mailman/listinfo/octave-bug-tracker bug tracker mailing list]. You'll get updates on all bug activity, and you can jump in when you see
[http://www.gnu.org/software/octave/bugs.html bugs], making an attempt to
diagnose them. Eventually, you will also know how to fix them. If you want
to help with bug reports or patches, subscribe to
[https://savannah.gnu.org/mail/?group=octave the bug tracker mailing list].
You'll get updates on all bug activity, and you can jump in when you see
something you can help with.
something you can help with.


Look at our [[Projects]] and [[Summer of Code Project Ideas]] if you need
Look at our [[projects]], [[short projects]], and [[Summer of Code Project Ideas]] if you need specific inspiration for coding tasks that we would like to get done.
specific inspiration for coding tasks that we would like to get done. See
also the list of [[short projects]].


=Licensing issues=
=Licensing issues=

Navigation menu