janhoy commented on a change in pull request #531: URL: https://github.com/apache/solr/pull/531#discussion_r785560877
########## File path: dev-docs/plugins-modules-packages.adoc ########## @@ -0,0 +1,129 @@ += Plugins, Modules and Packages +:toc: left + +This document discusses how developers can group features into Plugins, Modules and Packages. + +== Definitions + +=== Plugin + +A plugin is a low level class that implements a certain Solr interface, such as +`QParserPlugin`, `AuthPlugin`, `UpdateRequestProcessor`, `QueryResponseWriter` etc. +See ref guide page https://solr.apache.org/guide/solr-plugins.html[Solr Plugins] for details. + +=== Module + +Earlier referred to as "Contrib". This is a well-defined piece of functionality that is +separate from solr-core and produces a separate `.jar` file in the build. Modules help +keep the solr-core small and lean and also reduces risk by including only needed java classes +on the class-path. A module can contain multiple Plugins. + +=== Package + +A Package is some server-side functionality for Solr that is provisioned with a `manifest.json` Review comment: A module CAN be a package, but a package does not need to be a module. (Contrib) modules are by definition maintained as part of the main repo by committers. But a package can also be some 3rd party feature that is not a Solr module. That's why I phrased it as I did. The reason I wrote "server-side functionality" was to distinguish from client-side modules like solrj-jdbc. But I guess the solrj split will not happen as (conrib) modules, but rather by sub folders under solrj and always be on the classpath for the server? There are two axes here - the modules/jars (packages) on server side, and dependencies (maven) on the client side. Thus `solrj-streaming` may be both a separate maven jar, as well as a package not part of the upcoming slim solr tarball. So perhaps some solrj-jars should be placed in `modules/`, if they are intended for splitting out like that. But we can use the "Plugin" term for simplicity. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
