annotate etc/ROADMAP.md @ 32721:130b9fbc5ebb

ROADMAP.md: Copyedits to existing items Include feedback from Discourse to copyedit existing items.
author Arun Giridhar <arungiridhar@gmail.com>
date Wed, 10 Jan 2024 18:37:21 -0500
parents 62a3f452c2ed
children 7c6a8d72f91b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
1 Octave Roadmap (version 10 onwards)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
2
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
3 This roadmap is intended to be a living document, and serves multiple purposes:
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
4 * For developers to agree on activities and large-scale features,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
5 * To decide priorities,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
6 * To inform new contributors where they can contribute and feel ownership,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
7 * To allow easier parcelling of smaller activities into GSoC etc,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
8 * To be a transparent basis for any financial decisions to spend project money.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
9
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
10 This document is different from a wishlist of features, such as those
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
11 present on the Octave wiki, in that this document lists names of people
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
12 willing to work on specific activities, whether they are contributors writing code
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
13 themselves, or existing Octave maintainers soliciting / reviewing / accepting code
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
14 from new contributors.
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
15
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
16 * For new contributors, this is a way to get your contribution
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
17 reviewed and merged into the Octave codebase with more confidence, and a way
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
18 to work with a more experienced Octave developer on a named activity so you too
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
19 can become an Octave developer over time.
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
20
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
21 * For existing maintainers, this is a way to get new developers and
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
22 contributors in, which helps Octave development scale.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
23
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
24 If you want to take ownership of some activity below, or create a new activity,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
25 please edit the list as necessary, add your name, and post about it on Discourse.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
26 If you can, please split up a large activity into smaller pieces that can then
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
27 be specifically written by new contributors, GSoC interns, etc. The aim is to
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
28 allow anyone to jump in to start contributing to a topic.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
29
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
30 This roadmap process starts from Octave 10. As has been the practice for many
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
31 years, a major version of Octave is released each year, and no single feature
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
32 will be "required" for any given version to be released, but it is good to have
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
33 target versions for this list of features so that certain long-pending activities
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
34 get more priority.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
35
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
36 - Better support for classdef. (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
37 - Matlab-compatible classdef behavior.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
38 - (Needs to be split up into smaller activities.)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
39 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
40
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
41 - HDF5 compatibility with Matlab: (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
42 - Deprecate Octave's native savefile formats in favor of Matlab-compatible HDF5.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
43 - Decide how to handle backwards compatibility with older savefiles.
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
44 - Needs h5read/h5write as well as v7.3 MAT-file load/save support.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
45 - Influenced by classdef decision above.
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
46 - Note: Examine Nelson's implementation.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
47 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
48
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
49 - String class "foo" as distinct from array of characters 'foo'. (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
50 - See https://octave.discourse.group/t/implementation-of-a-string-class/1089
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
51 - Depends on HDF5.
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
52 - Note: Examine Nelson's implementation.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
53 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
54
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
55 - Dictionaries (aka associative arrays / hashmaps). (LEAD? GUILLAUME?)
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
56 - See https://octave.discourse.group/t/adding-hashmaps-to-octave/3306
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
57 - Depends on HDF5 and string.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
58 - Target: Octave 10.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
59
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
60 - Release bytecode interpreter. (PETTER, JWE)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
61 - First question: When Octave is released with the bytecode interpreter,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
62 will it *replace* the tree-walker or will it sit alongside it? Once that
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
63 question is answered and agreed upon, these activities follow.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
64 - Behavior compatibility with tree-walking interpreter.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
65 - Code clarity and documentation.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
66 - Style check.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
67 - Performance experiments.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
68 - Target: Octave 10
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
69
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
70 - Graph theory routines (ARUN)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
71 - These need a full overhaul and in some cases ground-up implementation.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
72 - Matlab switched to graph objects some versions ago, as opposed to the
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
73 traditional approach (pre-2016) of directly manipulating adjacency matrices
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
74 and edge lists.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
75 - Octave needs to implement / import many classical graph functions
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
76 (e.g. all-pairs shortest paths, transitive closure, betweenness centrality, etc).
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
77 These are not difficult to write, but have mostly been written by end users
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
78 for their own work, so the first effort is to converge on a usable function API.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
79 - Possible dependency on HDF5 if graph classes are written as classdefs,
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
80 so graph objects will not be saved until then, but the rest of the
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
81 development can start and proceed.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
82 - Target: Octave 10-11, potential GSoC project for 2024.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
83
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
84 - Argument blocks implementation. (LEAD?)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
85 - Some work has already been done, but needs to be completed.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
86 - Target: Octave 11.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
87
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
88 - Assess OpenGL role and improvements. (RIK?)
32721
130b9fbc5ebb ROADMAP.md: Copyedits to existing items
Arun Giridhar <arungiridhar@gmail.com>
parents: 32705
diff changeset
89 - May possibly need a paid consultant.
32705
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
90 - Target: Octave 11
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
91
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
92 - Replace GLPK with more performant solver for LP / MILP. (ARUN)
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
93 - Candidate: HiGHS.
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
94 - More generally, provide a usable API for optimization routines so that
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
95 users can drop in their own favorite solver. The idea is that the user
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
96 should be able to switch backend solvers with just a simple change
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
97 like changing this:
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
98 `linprog (... , "solver", "glpk")`
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
99 to this:
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
100 `linprog (... , "solver", "highs")`
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
101 without changing any other user-written code. Can this sort of thing
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
102 be done properly so that new solvers are easy to add to Octave by their
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
103 respective authors?
62a3f452c2ed ROADMAP.MD: Initial commit
Arun Giridhar <arungiridhar@gmail.com>
parents:
diff changeset
104 - Target: Octave 11