gtorrent / gtorrent-core

Core library of gTorrent which handles everything but UI/UX
GNU General Public License v3.0
39 stars 12 forks source link

Plugin System #40

Closed truNEET closed 10 years ago

truNEET commented 10 years ago

While maybe not too critical just yet, we should start to think of how we would like to handle our plugin architecture. Our plugins should not be shipped as a dll or so file as we can't ensure that plugin authors would be willing to release source or target every platform.

If we decide to go this approach, that leaves us two strong scripting language canidates, Python or Lua.

What do you guys think? I'd love to start working on a branch and an RSS plugin as an example.

ascent12 commented 10 years ago

My vote is for Lua, just for how small it is to ship the interpreter/JIT compiler. Plus, Lua tables are a miracle of this universe.

benwaffle commented 10 years ago

we'd have to learn more languages :(

ascent12 commented 10 years ago

Lua is easy.

benwaffle commented 10 years ago

we could cross compile on jenkins C++ modules

infoburp commented 10 years ago

I think lua is a good idea, but providing this lua interface is of itself a plugin, so why not do what @benwaffle says, and write the lua interface plugin first? best of both worlds..

infoburp commented 10 years ago

lua interface as a jenkins C++ module I mean

benwaffle commented 10 years ago

what? no, i'm saying all plugins could be in C++ and cross compile and/or use jenkins

I think its easier to have C++ plugins, and you could have a plugin written in C++ that will run lua code / provide bindings if someone wants.

fuyukaidesu commented 10 years ago

We should not talk about this yet because we're not sure how the code will look like when the time will come to implement plugins.

nyanpasu commented 10 years ago

@fuyukaidesu +1

Too early to decide. We should wait till 0.2.0 or even 0.3.0 before we decide upon the madness that is plugins. Because then we'd have to focus on the code being safe, so that retard script kiddies don't break shit.

benwaffle commented 10 years ago

We should implement all non essential features as plugins, so it's important to do this now. Even stuff like prioritizing and labeling stuff should be a plugin. Then, everything becomes modular.