The above is all correct, but the main reasons why we're changing everything to addons are the following:
- Windower addons use Lua, which is more easier to work in than C++ for the uninitiated and leaves much less to go wrong
- All addons are open source and anyone can edit them. One of the main reasons for this move was because the Windower development team is smaller and less active than ever, so we cannot respond to changes as quickly and if things break, we may not always be there to fix them in time. Addons can be fixed by anyone who knows how to code (and sometimes that isn't even necessary.
- Often fixing addons isn't even necessary and just require a new LuaCore. But as was mentioned before, recompiling plugins sucks. Here's the process involved:
1. Change the code
2. Build it in debug mode
3. Test it
4. Increase the version (if test worked, otherwise go back to 1)
5. Build it in release mode
6. Upload the DLL to our server (once to the live branch and once to the dev branch)
7. Increase the version number in the manifest to match
8. Update our symbol storage for the new file (for debugging purposes)
9. Update the changelog with a note on what changed
10. Wait for the community to find 50 things that don't work that you missed
11. Go back to 1
This process is tedious, but it's not too bad to do for just one plugin. However, we currently maintain 45 plugins, and this is a major pain in the *** if something seriously breaks. Addons, however, all rely on LuaCore, meaning we only have to fix LuaCore and all addons magically start working again.
- This is not a main reason for doing it, but Windower 5 will only support Lua addons (at first anyway, we haven't decided yet how to go with the C++ API). That means that once we have all current plugins converted to addons, they will immediately work for Windower 5 as well (once we have the translation layer implemented).