HoustonPutman commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r786904871



##########
File path: dev-docs/plugins-modules-packages.adoc
##########
@@ -0,0 +1,137 @@
+= 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 Lucene or 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
+
+Solr modules are addon Solr plugins that are not part of solr-core, but 
officially maintained
+by the Solr project. They provide well-defined features such as the 
"extracting" module which lets
+users index rich text documents with Apache Tika. Modules were earlier known 
as "contribs".
+
+Each module produces a separate `.jar` file in the build, and thus help keep 
the solr-core small and lean,
+and also reduces risk by including only needed java classes on the class-path.
+
+A single module can contain multiple Plugins.
+
+=== Package
+
+A Package is a module or a 3rd party plugin for Solr provisioned with a 
`manifest.json`
+to enable discovering and loading through 
https://solr.apache.org/guide/package-manager.html[Solr's package manager]. 
Packages are loaded from a "package repository" which is
+simply a json file on a HTTP server.
+
+Packages can be maintained by 3rd party devs and hosted on
+GitHub, like https://github.com/yasa-org/yasa[YASA],
+https://github.com/rohitbemax/dataimporthandler[DataImportHandler],
+https://github.com/erikhatcher/solr-velocity[Velocity],
+https://github.com/cominvent/request-sanitizer-component[RequestSanitizerComponent]
+and https://solr.cool/[several others]. Such packages are not endorsed by the 
Solr project and must be used at own risk.
+
+But the Solr project is also working on packaging our own (1st party) modules 
as packages,
+and host them either inside the binary tarball distribution of Solr or later 
also in the
+ASF download repos.
+
+== Dev guide for creating modules
+
+=== When to create a module
+
+Any functionality added to Solr that is not obviously useful for all Solr 
users and that
+spans more than a single source file, should be considered for a new module.

Review comment:
       ```suggestion
   spans more than a single source file, should be considered for a new module.
   
   Solr functionality that requires risky dependencies can more easily be added 
as a module, because Solr users will not have to load those dependencies by 
default.
   ```

##########
File path: dev-docs/plugins-modules-packages.adoc
##########
@@ -0,0 +1,137 @@
+= 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 Lucene or 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
+
+Solr modules are addon Solr plugins that are not part of solr-core, but 
officially maintained
+by the Solr project. They provide well-defined features such as the 
"extracting" module which lets
+users index rich text documents with Apache Tika. Modules were earlier known 
as "contribs".
+
+Each module produces a separate `.jar` file in the build, and thus help keep 
the solr-core small and lean,
+and also reduces risk by including only needed java classes on the class-path.

Review comment:
       ```suggestion
   Each module produces a separate `.jar` file in the build, and additional 
dependencies required by each module are packaged with that module's `.jar` 
file. This helps keep the solr-core small and lean,
   and also reduces risk by including only needed java classes and dependencies 
on the class-path.
   ```
   
   I think we should mention something about dependencies here. Not sure if 
this is the perfect language though.




-- 
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