Forbidden practices for third-party plugins

The following practices are forbidden in third-party plugins. Any plugins doing what is listed below will be banned from AmiBroker (we will actively prevent plugins that do so):

  1. Displaying ANY user interface (especially pop up dialogs) in
  • Init()
  • Release()
  • GetPluginInfo()
  • GetFunctionTable()
  • SetSiteInterface()

    These functions are provided for setting up internal data structures but NOT to display any UI, take ANY user input, etc.
  1. Interferring in any way with normal AmiBroker startup, including display of ANY pop up boxes, slowing down loading by more than 0.5 second per plugin or negatively affecting startup performance in any other way

  2. Not indicating clearly in any message boxes produced by plugin that the message comes from plugin. The plugin MUST NOT confuse user as to the source of message and must clearly say the plugin NAME that is responsible for the message

AFL plugins are NOT meant to display any UI. Data plugins should display UI only when calling Configure() and/or in plugin status call back.

All plugins can only display UI if end user has specifically asked for plugin-exposed functionality (for example by calling plugin FUNCTION directly from end user code) or if user specifically used plugin status menu (in case of data plugins). UI created by the plugin MUST not interfere with AmiBroker. Non-intrusive, non-modal operation is recommended. If possible use separate EXE for UI.

Long-running initialization should be delayed until user actually calls plugin-exposed AFL functions, to prevent loading of stuff that is NOT actually used by end-user.