Bad behaving plugins will NOT be loaded in 2021

Well, thanks for putting this notice and allow for discussion. Please take into consideration for many old customers, like me, only develop plug-in for own usage. If you do so, we would be stucked in the current version and not be able to upgrade.

Bless you.

3 Likes

One possibility to address "private plugins" is that AmiBroker would change Vendor Name and would load the plugin if vendor name is the same as registered user name.

But probably the simplest and least troublesome method would be blacklisting and disallowing only blacklisted plugins. But for that Amibroker would send plugin name and md5 or similar checksum of all unknown plugins at the startup to peform online check. If check is blocked in anyway (firewall), plugins won't be loaded.

4 Likes

I can feel your pain. And I support you for doing what so ever to stop this piracy. I am from India but trust me I feel ashamed when due to some scumbags name of Nation is put to shame.

2 Likes

That is totally untrue. New versions are released way more often. If you look at the devlog at http://www.amibroker.com/devlog you would learn what the truth is.

3 Likes

@DotNetforAB - your plugins are BADLY WRITTEN.

I explained that to you millions times and you did not listen:

The plugin must NOT do anything that requires "attendance" inside Init().

In fact Init() should be only used to initialize global variables (if needed) AND NOTHING ELSE. You MUST NOT display any UI / windows or whatever from Init() call. That is FORBIDDEN!

What you are doing is WRONG and AGAINST rules:

If you were not doing WRONG things against the RULES you would not get problems with splash screen.

2 Likes

You can ask for passwords and security codes when user asks for something from your plugin (e.g. calling your AFL function).

1 Like

Yes you're wrong. It is clearly explained here: Forbidden practices for third-party plugins

And @Kuba wrote you essentially the same thing as said there. IF and ONLY IF end-user CALLS EXPLICITLY your DLL you can do anything.

Running ANYTHING behind the scenes in Init() or earlier (like DllMain) and hiding that from end user is FORBIDDEN!

If your plugin needs keys/licenses/password, you should check that when USER CALLS your function and if license is invalid use AFL Error() (via CallFunction) to display error message. That is non-intrusive way of doing things. Plugins are NOT meant to display UI. If you need UI for configuration, provide separate EXE that runs UI separately from AmiBroker, without blocking anything.

General rule: plugin MUST NOT INTERFERE with normal operation of AmiBroker.

Plugin must not prevent AmiBroker from loading just because somebody placed it in Plugins subfolder. You do not have authority/allowance to block main program just because you have some plugin problem.

And it was all written already in the thread I quoted: Forbidden practices for third-party plugins

1 Like

OK, here is the update about current situation:

  1. The changes to the way how plugins are loaded are postponed till 2021, which means NO CHANGES to the way how plugins are loaded in ver 6.38+ to be released this month

  2. in 2021 AmiBroker will start monitoring activity of plugins such as time spent, stealing focus, etc in functions like DllMain, Init(), etc, report bad behaving ones and eventually block bad-behaving ones.

2 Likes

thank you - this is good news

As announced earlier in 2021 AmiBroker will start monitoring activity of plugins.
Specifically we will target:

Our own standards for plugins are:

  • must be dynamically linked to C runtime to conserve RAM and disk space (MSVCRT on older Windows or Universal C runtime on newer)
  • DLL file size is not greater than 1MB (actually our own plugins are below 0.16MB)
  • loading time must be very low, here is the time that our plugin consume to load and initialize, use that as guideline for your development
    Candle.dll (7.55 ms)
    CMAE.dll (12.41 ms)
    CQG.dll (11.83 ms)
    DDE.dll (28.48 ms)
    eSignal.dll (86.36 ms)
    IB.dll (20.51 ms)
    IQFeed.dll (15.69 ms)
    MOCASample.dll (10.46 ms)
    MS.dll (11.07 ms)
    MT.dll (10.80 ms)
    myTrk.dll (16.68 ms)
    ODBC.dll (13.95 ms)
    ODBCA.dll (13.31 ms)
    PSOSample.dll (10.89 ms)
    QT.dll (11.18 ms)
    Tribes.dll' (9.91 ms)

    you can see they are all well below 0.1 sec. I doubt if we will allow anything that exceeds 0.5 sec.

*) we don't want bloatware to be loaded in AmiBroker address space and cause performance problems. If you use bloatware, use separate process and talk over TCP/IP like IB plugin talks to Traders Workstation that is Java based bloated software. But IB plugin is lightweight because it does NOT use Java and does NOT load Java runtime.

Generally, plugin interface was added to AmiBroker in 2002 and in principle it was meant for data plugins and super light-weight add-ons that will expose extra functions to AFL.
But, at least in case of AFL plugins, it all went in wrong direction, as they started to be abused to HIDE the formulas. It was never intended use of plugins. We don't want AmiBroker to become platform for black boxes. Steps will be taken to highly discourage use of plugins to hide the code, possibly even mechanism to display all hidden calls from plugins to the end-user.

AmiBroker is meant as a platform for system development, not for selling machine for black boxes (including cases when plugin "vendors" offer them with cracks of AB).

The original goal for plugin interface was giving ability to extend AFL, not to hide it.

In that sense for example AmiPy plugin realizes this idea (extension of AFL) perfectly.

.NET plugins on the other hand are clearly advertised to hide the code.

4 Likes

Hello !! Tomasz :

I use the afl plugin to place order to my broker via broker's API , is this set to use Internet ?

if it is not , but how to do in this case ??

second Question :

DLL size is not greater than 1MB (actually our own plugins are below 0.16MB)

my dataplugin to hold all data for Quotation more then one date in tick , so it may be very large maybe 2~3Gb, how do i do for this , to suit new plugin rule

Question 1:
Broker interfaces should be developed as standalone programs like IBController and use OLE automation, not AFL plugin interface.
Without having the plugin it is impossible to say if it accesses internet or not. Generally, if some broker wants to certify their plugin they have to contact us so we can whitelist it.

Plugins DLLs are loaded in AmiBroker address space. We have to control what is happening because plugins currently have way too much freedom to do anything, including doing harm. At minimum user must be made aware of what is happening inside plugin. We don't want black boxes to exist in AmiBroker address space. Plugins must be transparent as to what they are doing.

Question 2:
I DID NOT write about DATA. I wrote about executable file size, i.e. DLL file size. It has absolutely nothing to do with the amount of data it can process (IQFeed plugin for example can download gigabytes of data, but executable file size of DLL is just 55KB (0.055MB)

1 Like

Thank you for your detailed explanation:

Question 1 :
We will use the AFL plugin to connect to the Broker interface for two reasons. 1: We don’t want to build a separate program to execute the order, so as not to cause user confusion. 2 is my personal reason, which I am not familiar with. The operating mechanism of ole is a bit difficult to debug, so it is more convenient to use afl plugin.

Question 2 :
Understand, yes, my current data plugin is only 208kb, which is not as big as you said. I will use your request first. When the program is larger than 1MB, I will apply for a whitelist with you.

Thank you again

Please give your directions to third party service providers who have gone through your guidelines for plugins (Dos and Don'ts) and be raedy to compply with. With imminent policy changes in 2021 as indicated by you, please guide steps required from thrid parties to consider. You may like to cover following specific issues:-

(a) How to allow users to deploy custoom plugins to only licensed users of amibroker and specific machine/machines(main / standby).
(b) To prevent unauthorised copying of plugins and further redistribution illegaly who, in the process, encourage unlicensed use of amibroker also.
(c) Permissions and suport from Amibroker end (like free trial for all your registered users, posting url/links to third party's webpage, etc).

a) and b) These question is outside of scope of AmiBroker. They are general questions about software licensing and protection. In my opinion, "software protectors" available for purchase are unreliable and/or already cracked and/or cause compatibility problems and/or they are too heavy resource-wise. Therefore I can not recommend them.
c) AmiBroker free trial is not for use with your registered add-on.

Any AmiBroker user must first buy the AmiBroker license and AFTER that he/she may consider buying 3rd party add ons. Not the other way round. Trial is for evaluation before purchase of AmiBroker, not for use with 3rd party plugins without paying.

Also, it is your responsibility to provide support for your add-on. If some of your users ask questions about your work, we won't be able to answer questions regarding 3rd party add-ons simply because:

  • we did not create them
  • we did not test them
  • we don't use them
  • we don't sell them

Hello @Tomasz

I have a question regarding this topic. Currently I have been working on my first implementation of algo trading on GPW using Statica 4 plugin, but planning using Statica 5 shortly (BossaStatica5 ) as data plugin and BossaAB plugin for connecting AmiBroker to Bossa API (Plugin bossaAB). Is it possible that these plugins might not be allowed in the next AB releases? Should I contact Bossa or Statica developers or maybe they are aware of upcoming changes? Thank you for the info.

As it is my first post on the forum in 2021, I wish you Tomasz and all AmiBroker users a New Year full of peace, happiness, prosperity and health :slight_smile:

3 Likes

Don't worry. Statica plugin is known to us, it was developed with our approval and it will be whitelisted out-of-the-box. BOŚ and 2 other banks in Poland co-operate with us and all those plugins will work fine.

1 Like

Regarding (a) Native/Mother softwares use licensing per named user/client/machine or use Sha-2 (checksum) etc methods. Chlild softwares (like plugins) commence session though mother app after successful verification. MotiveWave, Sierra Chart etc use this method. If someone can tell/guide me how my plugins check whether user of my plugin has licensed version of Amibroker, when I don't have databank of licensed users or their licsense numbers or thier machine numbers?. Many service providers enable third party plugins to be deployed only on licensed versions and still without giving user data to the plugin developer.

Regarding (b) To some extent plugin developer ensures his valid users and their expiration vilidity! They even offer their plugins with cracked version of Metastock/Amibroker for free. I hope this is what we subscribed users don't want !!

Regarding (c) My point is misunderstood. Support from Amibroker to plugin developers was suggested and not from Amibroker to developer's clients!!! Supporting plugin developers by suggested mechanism,may help stopping them cutting across to the market unethically. By the way in my post I did not ask to create,test,use or sell deveopr's plugin. I also did not convey that he/she has developed plugin for Amibroker without it being there in the first place.

In my knowledge, once it was metatock and esignal and now it is amibroker that has the most cracked versions running in the market. Reason, sheer performance and being user friendly! We may or may not be able to teach the unethical to understand what relentless effort goes behind this product. But it is proprieter, authentic users and thrid-party (the community as a whole) should try their best to guard it!
One last word. Things are not understood the intended way and even when conveyed in a descent way !!

Once intended message is understood, please remove relevant messages of all parties concerned (to be fair)

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.