R GSoC 2015: Project plan
The project consists of two parts:
- Part A: Subsetted computations
- Part B: Multi-core processing
- Milestone T1: All Milestones on GitHub.
- Milestone T2: Continuous Integration using Travis CI.
- Milestone T3: Code coverage using covr and Coveralls.
- Milestone A1: Requirement specifications (subsetted computations)
- Milestone A2: Tests and R mockup implementation (subsetted computations)
- Milestone A3: Benchmark reports (subsetted computations)
- Milestone A4: C implementation and help pages (subsetted computations)
- Milestone A5: Package release (subsetted computations)
- Milestone B1: Requirement specifications (multi-core processing)
- Milestone B2: Tests and R mockup implementation (multi-core processing)
- Milestone B3: Benchmark reports (multi-core processing)
- Milestone B4: C implementation and help pages (multi-core processing)
- Milestone B5: Milestone B4: Package release (multi-core processing)
- 2015-05-25: GSoC: Development begins.
- 2015-05-27: Milestone T1: Add all Milestones to GitHub.
- 2015-05-28: Milestone T2: Continuous Integration using Travis CI.
- 2015-05-29: Milestone T3: Code coverage using covr and Coveralls.
- 2015-05-10: Milestone A1: Requirement specification (subsetted computations).
- 2015-06-01: Milestone A2: Tests and R mockup implementation (subsetted computations).
- 2015-06-05: Milestone A3: Benchmark reports (subsetted computations)
- 2015-06-18: Milestone A4: C implementation and help pages (subsetted computations).
- 2015-06-22 -- 2015-07-05: DJ has exams.
- 2015-06-29: Midterm evaluation code freeze.
- 2015-07-03: GSoC: Midterm evaluation deadline.
- 2015-07-05: Milestone A5: Package release (subsetted computations).
- 2015-07-06: Part B of project starts.
- 2015-07-10: Milestone B1: Requirement specifications (multi-core processing).
- 2015-07-17: Milestone B2: Tests and R mockup implementation (multi-core processing).
- 2015-07-24: Milestone B3: Benchmark reports (multi-core processing).
- 2015-08-14: Milestone B4: C implementation and help pages (multi-core processing).
- 2015-08-17: A week of cleanup, tweaks, bug fixes and documentation.
- 2015-08-24: Final evaluation code freeze.
- 2015-08-28: GSoC: Final evaluation deadline.
- 2015-08-30: Milestone B5: Package release (multi-core processing).
Footnote: (*) Google Summer of Code has some formal GSoC deadlines which are labelled as 'GSoC' above.
Each milestone has corresponding set of deliverables.
- Setup GitHub milestones based on the milestones in Part A and Part B.
- Add @HenrikBengtsson and @hcorrada as GitHub collaborators (so they can edit milestones and labels).
Comment: This will make project more efficient and easier to manage.
- Setup personal Travis CI account and connect to personal GitHub account.
- Push to GitHub to build and check package on Travis CI.
Comment: See .travis.yml; should be work out-of-the-box. Example output at https://travis-ci.org/HenrikBengtsson/matrixStats.
Comment: This will make automate testing saving lots of time.
- Run code coverage analysis using covr via
make covr
. - Setup personal Coveralls account and connect to personal GitHub account.
- Push to GitHub to build and check package on Travis CI and finally coverage report to Coveralls. Example output at https://coveralls.io/r/HenrikBengtsson/matrixStats.
Comment: This will help us identify pieces of code that is not tested.
Please submit all code deliverables as pull-requests to 'feature/subsetting' branch of GitHub repository 'HenrikBengtsson/matrixStats'.
- Google Document 'matrixStats: Subsetted Indexing'.
Comment: This will help identify what tests to write.
- Fully functional mockup
R/*.R
implementation of subsetting for all functions. - Test scripts in
tests/*_subset.R
for above subsetting functions. - All tests should pass. Failed cases should be commented out and explained in comments.
- Package should build and pass
R CMD check --as-cran
with all OK.
Comment: This will allow us to run tests as soon as possible. With CI (T2 + T3) we will have a contentiously overview of what works and whenever a bug is introduced it will be detected automatically and momentarily.
- RSP benchmark reports (
inst/benchmarking/*_subset.md.rsp
) for all subsetted functions, e.g.fcn(x, rows=rows)
versus "manual approach"fcn(x[rows,,drop=FALSE])
.
Comment: This will help us quantify the improvement relative to the "manual" approach. At the beginning the mockup (A2) and the manual approach should give similar benchmark results, but with the native implementation (A4) we should see improvements.
Comment: The style of benchmark report already proposed is good enough. Later we might extend it with a wider range of subsetting, e.g. 5%, 25%, 50%, 75%, 95%.
- Fully functional
src/*.h
andsrc/*.c
implementation of subsetting for all functions. - All tests should pass. Failed cases should be commented out and explained in comments.
- All functions should have subsetting documented.
- Package should build and pass
R CMD check --as-cran
with all OK.
HB will verify/do the following:
- Package should build and pass
R CMD check --as-cran
with all OK. - Submit package to CRAN.
Comment: Releasing package early has the advantage of getting community feedback sooner.
Please submit all code deliverables as pull-requests to '[feature/multicore]' branch of GitHub repository 'HenrikBengtsson/matrixStats'.
- Google Document 'matrixStats: Multi-core processing'.
- Fully functional mockup
R/*.R
implementation of multicore processing for all functions. - Test scripts in
tests/*_parallel.R
for above multicore processing functions. - All tests should pass. Failed cases should be commented out and explained in comments.
- Package should build and pass
R CMD check --as-cran
with all OK.
- RSP benchmark reports (
inst/benchmarking/*_parallel.md.rsp
) for all functions (whole matrices only; no subsetting needed)
- Fully functional
src/*.h
andsrc/*.c
implementation of multicore processing for all (relevant) functions. - All tests should pass. Failed cases should be commented out and explained in comments.
- All functions should have multicore processing documented.
- Package should build and pass
R CMD check --as-cran
with all OK.
HB will verify/do the following:
- Package should build and pass
R CMD check --as-cran
with all OK. - Submit package to CRAN.