Er is een nieuwe stabiele versie van het p2p-programma DC++ uitgekomen. DC++ is een van de vele programma's om bestanden via het Direct Connect-netwerk uit te wisselen. Het programma dankt de twee plussen in zijn naam aan C++, waarin het is geschreven. Het pakket wordt door Jacek Sieka ontwikkeld en is een opensourcevariant van de originele Neomodus Direct Connect-client. Nieuw in 0.801 is de mogelijkheid om extra functionaliteit door middel van plug-ins toe te voegen.
The new series of DC++ come with a plugin interface
As the first DC++ version of the 0.8 series goes stable today, I’d like to present a summary of basic information about its largest improvement: the plugin API.
The most important thing is that this feature marks a new era of DC++ in terms of customizability. In the last 10 years the DC++ users have constantly come up with ideas to implement various options and features into DC++ and most of these were denied or put on hold forever – mostly because those features were thought to not be attractive to all or majority of the users. With the new plugin API, many of these features can be realized in a form of a separate plugin. Even rarely used existing features can be moved into plugins (first example of this is the Search Spy function which was moved to the Dev plugin). This keeps the client code clean and optimized to the most fequent usage scenarios.
But the list of general advantages of the plugin interface is not over yet. The additional benefits were already discussed and published here when the plugin API was in an early stage.
So what you have here is a quick Q&A about the most important information about this new feature; hopefully one of the actual developers of the API will come up with more detailed techincal information soon (and thanks iceman50 for helping me out with a few answers to the following questions).
Q: Is this plugin interface planned and made from scratch or maybe some previous versions/implementations are already released in some clients?
A: The current API was based off of the original implementation from ApexDC++. The original design is from Twinks plugin API in PhantomDC++ and the current API is what evolved from the ApexDC++ API.
Q: Is the current API compatible with any old plugins made for previous APIs?
A: No. The API has a versioning system that clearly defines what plugins can be used in a certain impementation of the API.
Q: Has the current state (version) of the API already been released in any client?
A: Yes. In ApexDC++ and DiCe++.
Q: Are there any plugins available to use?
A: Yes, though only a few yet. They can be built from the DC++ repository or downloaded from the DCBase builds archive.
Q: What about the LUA scripting plugin availabe in the DC++ repository? Is it the one that’s been in BCDC++ for a while? Is this plugin compatible with the client side LUA scripts already available for BCDC++?
A: Yes, the LUA 5.2.1 client side script plugin works with all BCDC++ scripts in their Bzr repository.
Q: I want to make plugins for DC++. Is there any documentation to start with?
A: There’s no documentation yet, but the repository all BCDC++ scripts in their Bzr repository you can use for a start.
Q: Will this plugin API be frozen for a while or it’ll be developed further?
A: The API will certainly change with time. Most likely the next improvement will be a binary format change; the plugin .dll planned to be packed in to an archive with an accompanying .xml file containing the plugin version and other information. You can expect further changes coming as well.