-
Notifications
You must be signed in to change notification settings - Fork 28
Future Development Proposals
Cosmos Nicolaou edited this page Feb 12, 2020
·
5 revisions
I plan to spend more time working on vanadium in the near future. My goals for this work as follows:
- Generally refresh the code base to take advantage of improvements in the go ecosystem since 2015 and hence make it easier to integrate into other projects.
- rework verror to use the new xerrors approach, factor out the i18n aspects from error handling
- simplify the vom implementation to make it easier to support in other languages, potentially move vom into its own go module
- rework the vanadium context.T to use context.Context.
- cleanup the long standing logging mess, I'm considering moving to uber's zap structured logger.
- cleanup command line arguments so that other flag/cmdline packages can be used with libraries, implies refactoring the current v23.Init API and implementation. For example, it should only be needed when running an RPC service or client.
- rework the inconsistent and noisy apilog godepcop generated logging, by reanimating gologcop currently in the go.devtools repo, regenerating all of the calls to the current/new API structure and making it easier to avoid noisy logging. The noise is particularly annoying for naming related invocations which are recursive.
- use ssh-agent extensions instead of the current v23 agent, get rid of the agent code.
- use contemporary linting such as goreportcard.com
- Refocus vanadium core and go.lib on cloud-based distributed applications, this implies de-prioritizing mobile and to some extent embedded/IoT uses. Including but not limited to:
- removing java and swift support and move them to separate repos
- removing syncbase and associated packages
- moving all services other than the mounttable out of core.
- get rid of the life cycle management and subprocess management services, libraries and internal complexity
- Partition the two use cases of RPC/naming and security (authentication+authorization), so that the latter can be used separately from the first. This may result in the security related packages being moved to a separate go module (fortunately this is now trivial). I have other projects that I'd like to use the security packages for.
- Look at running publicly available mounttable and logind for developers to use - this is one reason I want to trim everything down to the smallest footprint possible since I'll be paying to run this service!
- Update the website to reflect all of this.