Short projects: Difference between revisions

From Octave
Jump to navigation Jump to search
(Overhaul introduction.)
(Overhaul page.)
(27 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This is a list of small projects to start helping with Octave development. The following items could be done
:''This is a collection of small projects to start contributing to Octave. Projects of long duration are listed in the [[Projects]] page.''
* in a reasonable amount of time (a few hours) and
* without Octave development knowledge.


{{warning|Please do not submit patches/fixes to the Octave mailing lists.  Upload your work at the respective Savannah bug tracker pages.  Of course you may always ask questions related to your work on the mailing list.}}
{{Note|If you never contributed to Octave before, we suggest to start with our [[Developer FAQ]].}}


Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.
== Review and fix existing bugs ==


The list is meant to be dynamic -- please add, remove, and comment on it. And since the things are likely to be of short duration, don't ask if is there is anyone already working on it. Projects of long duration should be added to the [[Projects]] page instead.
* Review bugs that catch your interest on the [https://savannah.gnu.org/bugs/?group=octave Octave bug tracker] on GNU Savannah.
** A modern interface to the Octave bug tracker is given by [https://octave.space/savannah/ SavannahAPI].
* Discuss with the developers there how to fix that bug or [[Mercurial|upload a patch there]].
* Some bugs have already patches attached.
** Help testing those patches.
** Help updating outdated patches to the latest development version (this requires some [[Mercurial]] knowledge).


Another way to catch a small project is to [https://lists.gnu.org/mailman/listinfo/octave-bug-tracker subscribe to the bug tracker] (note that the bug tracker has a lot of activity).
== Implement missing Matlab functions ==


Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.


== Bugs==
== Write Built-In Self Tests (BISTs) ==
 
Please help with the triage of [https://savannah.gnu.org/bugs/?group=octave existing bugs] to populate the list of easy bugs below. You may find it useful to review the [http://wiki.octave.org/wiki/index.php?title=Short_projects&action=history history] of this short projects page, to give you an idea of past successful short projects.
* {{bug|41674}} - image package: temporary arrays in imresize are doubles
* {{patch|8368}} - imremap - Change to imremap to reduce memory footprint
* {{patch|8369}} - imresize - Change to imresize to reduce memory footprint


==== Code submitted, requires changeset & verification ====
Writing BISTs improves Octave's regression testing and ensures that we don't break anything when we add new features.
Sometimes a standalone file or a diff file is submitted; Octave maintainers prefer a changeset though; preparing a changeset will expedite bug fixing.
 
* {{bug|48151}} - pkg update - error if packages are specified
 
== Missing functions ==
 
* There are lists of missing functions for [[:Category:Missing functions|several packages]].
** It would help to group the missing functions in the [[image package]], as per [http://www.mathworks.com/help/images/functionlist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.
* openfig/savefig functions
** These should be particularly easy additions as they are really just a wrapper on top of hgload/hgsave.
 
== Function Compatibility ==
A number of functions are implemented, but may have known incompatibilities or only partially handled option sets, etc.
* integral - currently cannot handle all optional inputs, see see {{bug|42037}}
 
== BIST tests ==
 
Write Built-In Self Tests (BIST) for a function.  This improve's Octave's regression testing and ensures that we don't break anything when we add new features.  Tests are written in the Octave m-file language and usually take less than 10 minutes to code for a single instance.


* [[Add_BIST_tests_for_octave_functions_written_in_C%2B%2B| BIST for C++ functions]]
* [[Add_BIST_tests_for_octave_functions_written_in_C%2B%2B| BIST for C++ functions]]
* [[BIST for m-files]].  See also [[Projects#Tests]].


* [[BIST_for_m-files| BIST for m-files]].  See also [[Projects#Tests]].
== Work on Octave packages ==
 
== Miscellaneous ==
 
* C++ cleanup of packages after the switch to exceptions (late 2015).See [[Invert if/else/error]].


* Use "units.h" from [http://www.gnu.org/software/units/ GNU units] in [http://octave.sourceforge.net/miscellaneous/function/units.html function units] (from the Octave-Forge [http://octave.sourceforge.net/miscellaneous/ miscellaneous package]) rather than making a system call and parsing its output (and having to handle multiple versions of it). This change will make it much more robust. It likely will alleviate the requirement of having [http://www.gnu.org/software/units/ GNU units] installed in the system separately by the user. This requires knowledge of C (units is written on C) and C++ to write its Octave interface. It can be very easy if the units.h truly allows to be used as library or maybe impossible if it does not. This has not been investigated yet.
* Take a look at https://gnu-octave.github.io/packages/ if you would like to work on some package there.


* Use non-empty identifiers in all warnings and errors issued by Octave; see {{bug|39439}}, {{bug|39434}}. You may tackle as many or as few IDs as you have time for. As it is a widespread issue, finding occurrences in the source code should give you valuable knowledge about the way Octave files are organized.
== See also ==
** When raising errors and warnings try to use the ids that are documented in the functions  [http://octave.sourceforge.net/octave/function/warning_ids.html warning_ids] and [http://octave.sourceforge.net/octave/function/error_ids.html error_ids].  If you really need a new id (please, first read the ones already there!), please add it to those functions as well.  If you see other ids used in core that are not given by the functions mentioned above, please, report or submit patch for them, in addition to the patch to the calling functions as well.


* extend sub2ind and ind2sub: {{bug|41796}}
* [[Projects]]


[[Category:Development]]
[[Category:Development]]
[[Category:Project Ideas]]
[[Category:Project Ideas]]
== Feature requests ==
* {{bug|41844}} - GUI Debug Menu could offer "Stop If..."
* {{bug|41530}} - Editor debug mode could show a dbup/dbdown GUI component
* {{bug|40211}} - More compact output for structs and cell arrays
* {{bug|32088}} - Feature request: -ALL option for WHICH
* {{bug|47464}} - audioformats: a new function to get information on supported audio formats
* {{bug|47239}} - calling system without shell
[[Category:Missing functions]]
[[Category:Missing functions]]

Revision as of 02:51, 28 April 2021

This is a collection of small projects to start contributing to Octave. Projects of long duration are listed in the Projects page.
Info icon.svg
If you never contributed to Octave before, we suggest to start with our Developer FAQ.

Review and fix existing bugs

  • Review bugs that catch your interest on the Octave bug tracker on GNU Savannah.
    • A modern interface to the Octave bug tracker is given by SavannahAPI.
  • Discuss with the developers there how to fix that bug or upload a patch there.
  • Some bugs have already patches attached.
    • Help testing those patches.
    • Help updating outdated patches to the latest development version (this requires some Mercurial knowledge).

Implement missing Matlab functions

Use the Savannah patch tracker for submissions unrelated to an existing bug.

Write Built-In Self Tests (BISTs)

Writing BISTs improves Octave's regression testing and ensures that we don't break anything when we add new features.

Work on Octave packages

See also