What Goes Where
If you’re building something new, build a VEF extension in your own repo. Plugins and components work, but VEF is the right model — see Why Extensions instead of Plugins and Components. Contributions that belong in the VillageSQL Server repo:Why Extensions instead of Plugins and Components
MySQL plugins and components will work in VillageSQL. VEF extensions get more:- Custom types — define new column types, which plugins and UDFs can’t do
- Packaging — distributed as
.vebfiles, installed withINSTALL EXTENSION - No restart required — extensions load and unload at runtime
- Versioning — declared in the extension manifest, enforced by the server
Starting a New Extension
VEF has two SDKs, both registering through the same framework:- C++ — vsql-extension-template is the starting point. Walk through Creating Extensions in C++.
- Rust — vsql-extension-template-rust is the starting point. Walk through Creating Extensions in Rust.
If VEF Doesn’t Support What You Need
VEF is still growing. If you need a hook or capability that isn’t there yet:- File an issue in the server repo describing what you need
- Upvote an existing issue if the request is already there
- Submit a PR adding the hook to VEF — framework improvements are welcome in the server repo

