Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up plugin architecture #65

Open
2 of 7 tasks
vikramrajkumar opened this issue Jan 17, 2017 · 3 comments
Open
2 of 7 tasks

Clean up plugin architecture #65

vikramrajkumar opened this issue Jan 17, 2017 · 3 comments

Comments

@vikramrajkumar
Copy link
Contributor

vikramrajkumar commented Jan 17, 2017

From @theoreticalbts on August 18, 2015 18:19

Currently our plugin architecture is not well encapsulated. Here are some problems I found:

  • We have code like this that manipulates operation_history_object in the core.
  • There is no reason to have most_recent_op in account_object as noted in the comment here.
  • The annotation subsystem is undocumented, unused and untested, but there are vestigial remnants of an early architecture where it was more widely used, such as meta_account_object.
  • The market_history and account_history plugins use the same space ID.
  • There is a comment in account_history_plugin.hpp noting that an object ID definition applies to the market history plugin!
  • The build scripts contain no provision for compile-time disabling of plugins. We should be able to build a witness_node binary with no account_history_plugin, and in fact should encourage active witnesses to run the stripped-down version without unnecessary indexes.
  • The CLI parameters contain no provision for run-time disabling of plugins. You should be able to specify which plugins you want in a config file, to enable/disable plugins without having to recompile.

Copied from original issue: cryptonomex/graphene#246

@vikramrajkumar
Copy link
Contributor Author

From @bytemaster on August 18, 2015 18:22

While I agree that it would be nice to clean this up. Do not assign items to yourself that you will not be working on this week. This is low priority.

@vikramrajkumar
Copy link
Contributor Author

From @theoreticalbts on March 3, 2016 18:26

One of the problems with FC's API implementation is that it's not possible to get a "black box" API. For example, to implement this ticket, we would want a method get_api( string api_name ) which should check that the user's authorized to access the API given in the config file, but the implementation of this method need not be aware of the details of API methods. But the only way to refer to an API is through fc::api<T>. So fc::api needs an abstract superclass which has the "generic" API stuff (e.g. working with handles and having an entry point for calling a method with string name and vector<variant> args).

@vikramrajkumar
Copy link
Contributor Author

From @theoreticalbts on March 3, 2016 19:1

In addition, it would be nice if a plugin could introduce new wallet commands in addition to new API calls. Perhaps a syntax plugin_name.command_name could be used in the wallet to access plugin-provided commands, and perhaps via configuration you could dump some plugins into the global "namespace" making their commands accessible without a dot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Project Backlog
  
New -Awaiting Core Team Evaluation
Development

No branches or pull requests

2 participants