This document is under construction. Nothing is nailed in stone. Please commit changes, send pull-requests or create issues.
Let's make this a truly community-driven project by writing the roadmap together.
Mission of the clEsperanto project is to unite sub-communities of scientific image analysis by bridging between programming languages and environments.
- We aim crafting an easily accessible image processing library.
- We aim making image processing accessible for
- beginners and experts,
- programmers of any major language,
- users of any major operating system and
- owners of any major CPU and GPU hardware.
- We aim writing easy to read, maintain and extend code.
- We aim documenting our platform in an easily accessible way.
- We aim forming a community where users and developers make decisions together.
To achieve our goals, we plan to adapt the CLIJ project to be accessible to a broader audience.
- Core development: Translating ClearCL to C++ and wrapping from Python/Java/...
- CLIc via OpenCL C++ Wrapper API
- Python wrapper alternatives:
- Java wrapper alternatives:
- API design
- Determining if the CLIJ2 API is generic enough to be accessible from all platforms / if code can be copy-pasted between languages.
- Finding ways for language specific auto-generating APIs like in CLIJ2.
- Explore potential API-compatibility with scipy / cupy.
- Memory management (see image.sc forum)
- Wrapper development
- C++
- Python
- Java
- Macro
- User-documentation
- Introductory, partly generic, partly language specific
- Examples for all languages (Example generator?)
- Documentation generator as in CLIJ2.
- Four kinds of documentation
- Testing
- Automated tests for all platforms
- Integration tests, manual user-experience tests
- Cross-language testing
- Operating Systems
- Windows 10
- MacOS
- Ubuntu Linux
- Programming languages
- ImageJ Macro
- Fiji Jython
- Python
- Java
- Matlab
- Icy JavaScript
- C++
- Fiji Groovy
- Hardware (OpenCL version > 1.2)
- Intel HD GPUs
- NVidia GTX/RTX
- AMD GPUs (Vega)
- Apple Silicon M1
June 2020: Core development start
April 2021: Define new opencl-kernel format + documentation
July 2021: Reorganization of opencl-kernels
September 2021: Java/Python wrappers development start
September 2021: API mostly defined
December 2021: Core is functional, major wrapper code done.
February 2022: Alpha release of a minimal set of functions running on all target platforms and GPU hardware.
May 2022: Beta-release of full functionality
June 2022: Release of version 1.0. Code freeze to prevent breaking backwards compatibility
July 2022: Discussion of achievements and making a plan for version 2.0
CUDA support?
Compatiblilty with
- ITK
- Julia (via OpenCL.jl)