Summer of Code - Getting Started: Difference between revisions

Jump to navigation Jump to search
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Since 2011 the GNU Octave project has mentored 38 students in [[Summer of Code]] (SoC) programs by [https://summerofcode.withgoogle.com/ Google] and [https://socis.esa.int/ ESA].  Those programs aim to populate open-source software development and to attract potential new Octave developers.
{{Note|GNU Octave [https://summerofcode.withgoogle.com/organizations/5849336744771584/ has been selected] as mentoring organization for GSoC 2021.}}
 
Since 2011 the GNU Octave project has mentored 38 students in [[Summer of Code]] (SoC) programs by [https://summerofcode.withgoogle.com/ Google] and [https://socis.esa.int/ ESA].  Those programs aim to advertise open-source software development and to attract potential new Octave developers.


= Steps toward a successful application =
= Steps toward a successful application =


# 😉💬 '''We want to get to know you.  Communicate with us.'''
# 😉💬 '''We want to get to know you (before the deadline).  Communicate with us.'''
#* Join [https://octave.discourse.group/ '''Octave Discourse'''] or our [https://webchat.freenode.net/?channels=#octave '''IRC channel'''].
#* Join [https://octave.discourse.group/ '''Octave Discourse'''] or our [https://webchat.freenode.net/?channels=#octave '''IRC channel''']. Using a nickname is fine.
#* We are interested in you as motivated developer 💻  There is no need to present an overwhelming CV with prestigious universities 🏰 and programming contest awards 🏆 in it.  We are very fine if you just communicate using a nickname with us.  
#* Show us that you're motivated to work on Octave 💻. There is no need to present an overwhelming CV 🏆; evidence of involvement with Octave is more important.
#* If your first question is "Hi I'm new to Octave. What should I do?" '''you are out''' 🤦
#* '''<span style="color:darkblue;">If you never talked to us, we will likely reject your proposal</span>''', even it looks good 🚮
#* Remember, '''we are mentors and not your boss 🙂'''
# 📝💡 '''Tell us what you are going to do.'''
#* When you contact us for the first time, do not write just to say in what project you're interested in.  Be specific about what you are going to do, post many links 🔗, show us you know what you are talking about 💡, and ask many [http://www.catb.org/esr/faqs/smart-questions.html smart questions] 🤓
# 👩‍🔬 '''Get your hands dirty.'''
# 👩‍🔬 '''Get your hands dirty.'''
#* We are curious about your programming skills ⌨️
#* We are curious about your programming skills 🚀
#** Try to [https://savannah.gnu.org/bugs/?group=octave fix Octave bugs] or [https://savannah.gnu.org/patch/?group=octave submit patches] '''before''' the end of the application deadline.
#** Your application will be much stronger if you [https://savannah.gnu.org/bugs/?group=octave fix Octave bugs] or [https://savannah.gnu.org/patch/?group=octave submit patches] before or during the application period.
#** Take a look at the [[Short projects]] for simple bugs to start with.
#** You can take a look at the [[short projects]] for some simple bugs to start with.
#* '''Use Octave!'''
#* '''Use Octave!'''
#** If you come across something that does not work the way you like ➡️ try to fix that 🔧
#** If you come across something that does not work the way you like ➡️ try to fix that 🔧
#** Or you come across a missing function ➡️ try to implement it.
#** Or if you find a missing function ➡️ try to implement it.
# 📝💡 '''Tell us what you are going to do.'''
#* Do not write just to say what project you're interested in.  Be specific about what you are going to do, include links 🔗, show us you know what you are talking about 💡, and ask many [http://www.catb.org/esr/faqs/smart-questions.html smart questions] 🤓
#* Remember, '''we are volunteer developers and not your boss''' 🙂
# 📔 '''Prepare your proposal with us.'''
# 📔 '''Prepare your proposal with us.'''
#* GSoC, for example, [https://google.github.io/gsocguides/student/writing-a-proposal requires to submit a proposal].
#* If we see your proposal for the first time after the application deadline, it might easily contain some paragraphs not fully clear to us.  Ongoing interaction will give us more confidence that you are capable of working on your project 😓
#* If we see your proposal for the first time after the application deadline, you can easily imagine that it might contain ambiguities or some paragraphs are not fully clear to us.  We easily get doubts if you are capable of working on your project 😓
#* Try to show us as early as possible a draft of your proposal 👍
#* Try to show us as early as possible a draft of your proposal 👍
#* Then submit the proposal following the applicable rules, e.g. for [https://google.github.io/gsocguides/student/writing-a-proposal GSoC].


= How do we judge your application? =
= How do we judge your application? =
Line 55: Line 57:
== ode15{i,s} : Matlab Compatible DAE solvers ==
== ode15{i,s} : Matlab Compatible DAE solvers ==


An initial implementation of a Matlab compatible ode15{i,s} solver,
An initial implementation of Matlab compatible Differential Algebraic Equations (DAE) solvers, {{manual|ode15i}} and {{manual|ode15s}}, based on [https://computing.llnl.gov/projects/sundials SUNDIALS],  
based on [http://computation.llnl.gov/projects/sundials SUNDIALS],  
was done by [https://gsoc2016ode15s.blogspot.com/ Francesco Faccio during GSoC 2016]. The code is maintained in the main Octave repository and consists mainly of the following three files: [https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc {{path|libinterp/dldfcn/__ode15__.cc}}], [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m {{path|scripts/ode/ode15i.m}}] and [https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m {{path|scripts/ode/ode15s.m}}].
was done by Francesco Faccio during GSOC 2016.
The blog describing the work is [http://gsoc2016ode15s.blogspot.it/ here].
The resulting code has been pushed into the main Octave repository in the development branch and
consists mainly of the following three files
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/libinterp/dldfcn/__ode15__.cc __ode15__.cc],
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15i.m ode15i.m] and
[https://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/ode/ode15s.m ode15s.m].
The list of outstanding tracker tickets concerning this implementation can be found
[https://savannah.gnu.org/search/?Search=Search&words=ode15&type_of_search=bugs&only_group_id=1925&exact=1&max_rows=25#options here]
 
Possible useful improvements that could be done in a new project include:


* Implement a better function for selecting consistent initial conditions compatible with Matlab's decic.m. The algorithm to use is described [http://faculty.smu.edu/shampine/cic.pdf here]
The {{manual|decic}} function for selecting consistent initial conditions for ode15i can be made more Matlab compatible by using [https://faculty.smu.edu/shampine/cic.pdf another algorithm].  Another useful extension is to make ode15{i,s} work with datatypes other than double and to improve interpolation at intermediate time steps.
* make ode15{i,s} work with datatypes other than double
* improve interpolation at intermediate time steps.
* general code profiling and optimization


Other tasks, not strictly connected to ode15{i,s} but closely related, that could be added
to a possible project plan would be improving documentation and tests in odepkg and removing
overlaps with the documentation in core Octave.
* '''Required skills'''
* '''Required skills'''
: Knowledge of Octave, C/C++; familiarity with numerical methods for DAEs
: Knowledge of Octave, C/C++; familiarity with numerical methods for DAEs
Line 119: Line 103:
* '''Potential mentors'''
* '''Potential mentors'''
: Rik  
: Rik  
== Table datatype ==
In 2013, Matlab introduced a [https://www.mathworks.com/help/matlab/tables.html new table datatype] to conveniently organize and access data in tabular form.  This datatype has not been introduced to Octave yet (see bug {{bug|44571}}).  However, there are two initial implementation approaches https://github.com/apjanke/octave-tablicious and https://github.com/gnu-octave/table.
Based upon the existing approaches, the goal of this project is to define an initial subset of [https://www.mathworks.com/help/matlab/tables.htmlMatlab's table functions], which involve sorting, splitting, merging, and file I/O and implement it within the given time frame.
* '''Required skills'''
: Knowledge of Octave, C/C++
* '''Potential mentors'''
: [[User:siko1056|Kai]]


== Adding functionality to packages ==
== Adding functionality to packages ==

Navigation menu