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]

Reply via email to