Feature #38246
Updated by Ernesto Puerta about 5 years ago
This is a tracking issue to collect ideas on how to speed-up Ceph-dashboard development in order to keep pace with core Ceph, as well as to identify blocking issues. Problem: "Ceph Dashboard does not expose lots of features from Ceph core" * # Are new features/improvements designed and implemented dashboard-friendly? ** Are other Ceph teams Dashboard-aware? *** Do they try Dashboard regularly? Ever? *** Are other Ceph team members regularly involved in Dashboard activities/PRs/etc? *** Are Dashboard members regularly involved in other teams activities? **** Would it help to share a checklist of guidelines to make new features/improvements dashboard-friendly. ** Can we make dashboard development so easy that other team members can do it on their own? * # Is dashboard easy to extend? ** What are the pain points for a new and a regular contributor to Dashboard? ** Can we lower the entry barrier? *** Can we reduce 2-3 programming languages (Python, Typescript+Angular, potentially C++) to 1 (e.g.: Python)? **** Can we convert the front-end UI into a generic presentation layer fully built up from back-end config, so that creating/extending a Ceph feature only requires Python coding 90% time? ***** Can Ceph-dashboard be broken down to a bunch of generic widgets? Tables, Forms, Modals, Charts? ** Can we speed up daily work? *** Can building be sped up? **** What about a "make dashboard" that builds everything needed for running Ceph-mgr + dashboard? *** Can we share ready-to-use IDE defaults & recommendations? **** VisualStudio Code? Atom? Vim/Emacs? Packages to install? *** Can testing feedback loop be automated/reduced? **** Quick Jenkins job running tests that do not need Ceph built? *** Can debugging be improved? **** DEBUG flag enabled Ceph-Mgr wide? Or dashboard-only? ** Can we extend collaboration beyond Ceph and gaining external contributions? *** Can we increase the use of ready-to-use components? Angular NPM? Python PIP? **** Can we contribute our improvements back to those projects? **** Is it easy for us to use latest versions of components/libraries? ***** Yes with Angular. No with Python. ** Can we reduce architecture complexity? *** Can we simplify the end-to-end interface hops? workflow? Ceph component <-> - Mon <-> - Mgr C++ <-> - Mgr Python API <-> - Dashboard Python REST back-end <-> - Dashboard Angular front-end? (Different for RGW) **** Can new features be discovered and exposed from Ceph core metadata (embedded schemas or self-typed or variant-like)? metadata? **** Can Ceph interfaces be inferred from metadata? **** Can we extend Ceph-mgr polling/caching to make it work for new data structures on demand? ** Can we reduce code complexity? *** Are we measuring and tracking code duplication, cyclomatic complexity (pylint?), etc? *** Can we replace Ceph-Mgr Python C API with something simpler/safer?