ROADMAP.md
This roadmap document is intended to serve as a loose plan of our vision for Torch in the short term.
It is open to community feedback and contribution and only intends to serve as an initial draft.
After community feedback, we shall freeze it and work on it.
The roadmap focuses on five separate things
New class system:
[definite] Get rid of non-tensor-related stuff (like serialization) in TH, and move it to lua side
[needs discussion] OpenMP: Should it stay or go? Is Threads sufficient? - Ronan: I really wonder about this guy, especially now that I have been using threads intensively. I am not sure that fine-grine threading is necessary. - koray: I guess you mean with threading, there is no need for OpenMP, but I disagree. Our convolution layer will use multiple threads and then if we run a ReLu over a huge state space, it would become embarrassingly slow. We shouldn't expect everyone to run their experiments in a threading framework. It is more work than necessary sometimes.)
[needs discussion] Templated C++ in TH Core? - Ronan: Should I cleanup TH core? In the end, I am scared to move to C++, but some iterators based taking a closure could be nice (I have some of those that I could add easily). I could move to C++ if it was only template + keeping pointers (and not C++11/14/17, because that would limit the number of users that it can reach because of the latest compilers needed etc.).
[definite] Migrate to a single, better/modern testing support - koray: like some aspects of Totem, but should be in core Tester
[definite] Benchmarking support in Tester
[definite] Consistent testing scripts across all core projects
[definite] 'nn' container unified interface between containers and graph
[mostly definite] Switch to batch only assumption in 'nn'. Right now, the code is unnecessarily complicated for stochastic/batch confusion, we needed extra functions like nInputDims and such.
[needs discussion] Support named arguments in the constructor for all 'nn' layers.
[definite] 'rnn' package.
[mostly definite] argcheck for all core functions in torch. Get rid of cwrap's ugliness.
[definite] improve paths to support more file system operations - Clement: could lfs and penlight be made more standard? penlight is a heavy package but provides so much utility - Soumith: I think penlight is lightweight and provides strong utility, definitely consider dependence.
[definite] JIT/Lua/FFI/GC:
[definite] plan to have standalone FFI?
[definite] Lua 5.2 migration (I think it's already finished ;) ).
[mostly definite] Lua 5.3 migration
[mostly definite] Optionally replace GC by Ref-counting (existing version in luajit-rocks; but completely broken but will need to be fixed)
[needs discussion] Make OpenCL support more visible under torch/opencl (Soumith: Hugh Perkins will maintain it of course ;) ).
[definite] Split nn into THNN and nn. THNN would be NN package using TH as backend and nn would be the lua layer. THNN can be used as a standalone C library. Same for cunn
[Definite] CUDA typed tensor support - CudaHalfTensor CudaDoubleTensor etc.
[Definite] better plotting support
[needs discussion] UI package that doesn't suck?
Ronan: something based on cairo?
something based on a web client?
soumith: I think we should propose a common display API that any interface can implement, that way the users don't need to change scripts across different UI backends. Also, szym/display is a good candidate for the Web UI, ITorch is indeed a bit of a pain to install.
Should we endorse iTorch for everyone to use?
Heavy+encourages the use of global variables. Excellent for tutorials, though.
[needs discussion] How about Penlight? It has many crucial things that people use. Should we endorse it, use some things from it? Replicate some things in penlight in torch?
[needs discussion] how about Moses? New lean functional package that's pretty useful
[definite] A style guide