You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@solr.apache.org by GitBox <gi...@apache.org> on 2022/01/16 14:23:32 UTC

[GitHub] [solr] janhoy opened a new pull request #531: Developer docs for modules and packages

janhoy opened a new pull request #531:
URL: https://github.com/apache/solr/pull/531


   Did a write-up for developers about plugins, modules and packages. Far from complete, as it needs more detail and guidance, but perhaps a good starting point.
   
   I also propose a new naming convention for modules and packages that makes it more obvious from the name what kind of a module/package it is.


-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r785560804



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

Review comment:
       Last sentence says "A module can contain multiple Plugins."
   I'm open for re-phrasing suggestions.




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r785832505



##########
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:
       Re-phrased this text too. See if the new text is better.




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r787198328



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

Review comment:
       ```suggestion
   and https://solr.cool/[several others]. Such packages are not endorsed by the Solr project.
   ```




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r785832263



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

Review comment:
       Re-phrased this, please see the update.




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] epugh commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
epugh commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r786812053



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

Review comment:
       Normally you don't want to start with "But", I think this sentence works perfect with "The Solr"




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] atris commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
atris commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r785812337



##########
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 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
+
+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`
+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],

Review comment:
       Should we really mention these packages? Does it give a flavour of these being the only "official" ones?

##########
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 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
+
+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`
+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] and
+https://github.com/cominvent/request-sanitizer-component[RequestSanitizerComponent].
+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.
+
+=== Module layout
+
+Modules consist of a `solr-<moduleName>-X.Y.Z.jar` artifact as often also a set of dependency
+`.jar` files that it needs to work (but not jars that are otherwise default a part of Solr).
+
+Module sources live in the `solr/modules/` folder in the checkout, and have their own gradle
+build file. See "Bootstrapping" paragraph on how to scaffold a new module.
+
+The layout of modules in the binary distribution is produced by the gradle build and is
+as follows:
+```
+<install-dir>/modules/<moduleName>/
+  +-- README.md
+  +-- lib/
+      +-- solr-<moduleName>-X.Y.Z.jar
+      +-- dependency-1.jar
+      +-- other-dependency.jar
+```
+
+=== Bootstrapping a new module
+
+It is not hard to create a new module. You can do it by hand, or you can run the helper tool:
+
+```bash
+dev-tools/scripts/scaffoldNewModule.py <short-name> <full name> <one line description>
+```
+
+Once you have the scaffold, start creating classes, or move out classes from solr-core.
+Solr-core and test-framework are added as dependencies by default, and you can add custom
+dependencies as necessary. Those will automatically end up in `<moduleName>/lib` in the
+binary distro.
+
+=== Module naming
+
+As the number of modules grow, we should strive to keep naming logical. The proposal is to
+structure module name as `<type>-<name>`.
+
+Types can be:
+
+* `analysis-` - for fieldTypes, tokenizers, token filters (lucene level)
+* `update-` - for UpdateRequestHandlers, UpdateRequestProcessors and other indexing related
+* `search-` - for QParser, ResponseWriters, SearchHandler, SearchComponent
+* `auth-` - for Authentication and Autorization
+* `backup-`- for backup repositories
+* ...more here...
+
+Examples:
+
+* `search-clustering`
+* `update-extraction`
+* `backup-gcs`
+
+== Dev guide for turning a module into a package
+
+=== Adding a manifest
+
+Create a file `<my-module>/src/main/resources/manifest.json`. It contents should be at a
+minimum as below.
+
+```json
+{
+  "version-constraint": "9",
+  "plugins": [
+    {
+      "name": "update-extraction",
+      "setup-command": {
+        "path": "/api/collections/${collection}/config",
+        "payload": {"add-requesthandler": {"name": "${NAME}", "class": "update-extraction:org.apache.solr.handler.extraction.ExtractingRequestHandler"}},
+        "method": "POST"
+      },
+      "uninstall-command": {
+        "path": "/api/collections/${collection}/config",
+        "payload": {"delete-requesthandler": "${NAME}"},
+        "method": "POST"
+      }
+    }
+  ],
+  "parameter-defaults": {
+    "NAME": "/update/extract"
+  }
+}
+```
+
+Version constraint must follow SemVer expression syntax, `9` means it is
+compatible with any 9.x version of Solr. It is dangerous to assume compatibility with future versions, and for 1st party modules, we release them with every minor version, so consider
+using e.g. `9.1`, which will be compatible with all bugfix 9.1 releases.
+
+TODO: Move some content from https://solr.apache.org/guide/8_11/package-manager-internals.html

Review comment:
       +1




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy merged pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy merged pull request #531:
URL: https://github.com/apache/solr/pull/531


   


-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r785835023



##########
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 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
+
+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`
+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],

Review comment:
       I have clarified that such 3rd party packages are not endorsed by the project. This is docs for developers, not users, so I think giving a reference to some package examples is positive here. I also added a link to https://solr.cool




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r786876100



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

Review comment:
       I just learnt from @Chronial that you can add small suggestions like this by clicking the "Insert a suggestion" button. Then there is a button where PR author can just accept directly here. Will you give it a try? :)
   ![Skjermbilde 2022-01-18 kl  16 30 55](https://user-images.githubusercontent.com/409128/149967560-2e32f055-6ef5-404c-af43-b084d55cc118.png)
   
   




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] epugh commented on pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
epugh commented on pull request #531:
URL: https://github.com/apache/solr/pull/531#issuecomment-1015466334


   LGTM


-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] dsmiley commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
dsmiley commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r785519547



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

Review comment:
       ```suggestion
   A plugin is a low level class that implements a certain Lucene or Solr interface, such as
   ```

##########
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:
       I think we should say up front that this is an evolution of a module.  It *is* a module, plus metadata.  As to "server-side functionality" -- lets instead use a word we already defined above -- "plugin".

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

Review comment:
       nit-pick: Prefer to start a description on what something *is*, and not what it *is not*.

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

Review comment:
       In no place here did you say a module is a set of plugins.  I mean... isn't that like the most basic description?




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] epugh commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
epugh commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r786811078



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

Review comment:
       "at your own risk"




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r787197827



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

Review comment:
       ```suggestion
   The Solr project is also working on packaging our own (1st party) modules as packages,
   ```




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r786305409



##########
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 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
+
+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`
+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] and
+https://github.com/cominvent/request-sanitizer-component[RequestSanitizerComponent].
+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.
+
+=== Module layout
+
+Modules consist of a `solr-<moduleName>-X.Y.Z.jar` artifact as often also a set of dependency
+`.jar` files that it needs to work (but not jars that are otherwise default a part of Solr).
+
+Module sources live in the `solr/modules/` folder in the checkout, and have their own gradle
+build file. See "Bootstrapping" paragraph on how to scaffold a new module.
+
+The layout of modules in the binary distribution is produced by the gradle build and is
+as follows:
+```
+<install-dir>/modules/<moduleName>/
+  +-- README.md
+  +-- lib/
+      +-- solr-<moduleName>-X.Y.Z.jar
+      +-- dependency-1.jar
+      +-- other-dependency.jar
+```
+
+=== Bootstrapping a new module
+
+It is not hard to create a new module. You can do it by hand, or you can run the helper tool:
+
+```bash
+dev-tools/scripts/scaffoldNewModule.py <short-name> <full name> <one line description>
+```
+
+Once you have the scaffold, start creating classes, or move out classes from solr-core.
+Solr-core and test-framework are added as dependencies by default, and you can add custom
+dependencies as necessary. Those will automatically end up in `<moduleName>/lib` in the
+binary distro.
+
+=== Module naming
+
+As the number of modules grow, we should strive to keep naming logical. The proposal is to
+structure module name as `<type>-<name>`.
+
+Types can be:
+
+* `analysis-` - for fieldTypes, tokenizers, token filters (lucene level)
+* `update-` - for UpdateRequestHandlers, UpdateRequestProcessors and other indexing related
+* `search-` - for QParser, ResponseWriters, SearchHandler, SearchComponent
+* `auth-` - for Authentication and Autorization
+* `backup-`- for backup repositories
+* ...more here...
+
+Examples:
+
+* `search-clustering`
+* `update-extraction`
+* `backup-gcs`
+
+== Dev guide for turning a module into a package
+
+=== Adding a manifest
+
+Create a file `<my-module>/src/main/resources/manifest.json`. It contents should be at a
+minimum as below.
+
+```json
+{
+  "version-constraint": "9",
+  "plugins": [
+    {
+      "name": "update-extraction",
+      "setup-command": {
+        "path": "/api/collections/${collection}/config",
+        "payload": {"add-requesthandler": {"name": "${NAME}", "class": "update-extraction:org.apache.solr.handler.extraction.ExtractingRequestHandler"}},
+        "method": "POST"
+      },
+      "uninstall-command": {
+        "path": "/api/collections/${collection}/config",
+        "payload": {"delete-requesthandler": "${NAME}"},
+        "method": "POST"
+      }
+    }
+  ],
+  "parameter-defaults": {
+    "NAME": "/update/extract"
+  }
+}
+```
+
+Version constraint must follow SemVer expression syntax, `9` means it is
+compatible with any 9.x version of Solr. It is dangerous to assume compatibility with future versions, and for 1st party modules, we release them with every minor version, so consider
+using e.g. `9.1`, which will be compatible with all bugfix 9.1 releases.
+
+TODO: Move some content from https://solr.apache.org/guide/8_11/package-manager-internals.html

Review comment:
       I just linked to that page for now. Can do some restructuring later.




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] HoustonPutman commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on pull request #531:
URL: https://github.com/apache/solr/pull/531#issuecomment-1015390651


   Ok guys, please do a last read-through of the final text and let me know.
   
   I'll merge this in a few days if I don't see more comments. Progress over perfection. Then others can keep improving in various ways on top of this.


-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] janhoy commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
janhoy commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r786876948



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

Review comment:
       I just learnt from @Chronial that you can add small suggestions like this by clicking the "Insert a suggestion" button. Then there is a button where PR author can just accept directly here. Will you give it a try? :)
   ![Skjermbilde 2022-01-18 kl  16 30 55](https://user-images.githubusercontent.com/409128/149967560-2e32f055-6ef5-404c-af43-b084d55cc118.png)
   
   




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org


[GitHub] [solr] dsmiley commented on a change in pull request #531: Developer docs for modules and packages

Posted by GitBox <gi...@apache.org>.
dsmiley commented on a change in pull request #531:
URL: https://github.com/apache/solr/pull/531#discussion_r787069469



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

Review comment:
       I don't think we need to refer to the risks.  Solr itself has no warranties, and I expect those don't either.




-- 
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: issues-unsubscribe@solr.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@solr.apache.org
For additional commands, e-mail: issues-help@solr.apache.org