ozankabak commented on code in PR #11425:
URL: https://github.com/apache/datafusion/pull/11425#discussion_r1676942606


##########
docs/source/contributor-guide/architecture.md:
##########
@@ -25,3 +25,62 @@ possible. You can find the most up to date version in the 
[source code].
 
 [crates.io documentation]: 
https://docs.rs/datafusion/latest/datafusion/index.html#architecture
 [source code]: 
https://github.com/apache/datafusion/blob/main/datafusion/core/src/lib.rs
+
+## Forks vs Extension APIs
+
+DataFusion is a fast moving project, which results in frequent internal 
changes.
+This benefits DataFusion by allowing it to evolve and respond quickly to
+requests, but also means that maintaining a fork with major modifications
+sometimes requires non trivial work.
+
+The public API (what is accessible if you use the DataFusion releases from
+crates.io) is typically much more stable (though it does change from release to
+release as well).
+
+Thus, rather than forks, we recommend using one of the many extension APIs 
(such
+as `TableProvider`, `OptimizerRule`, or `ExecutionPlan`) to customize
+DataFusion. If you can not do what you want with the existing APIs, we would
+welcome you working with us to add new APIs to enable your use case, as
+described in the next section.
+
+## Creating new Extension APIs
+
+DataFusion aims to be a general-purpose query engine, and thus the core crates
+contain features that are useful for a wide range of use cases. Use case 
specific
+functionality (such as very specific time series or stream processing features)
+are typically implemented using the extension APIs.
+
+If have a use case that is not covered by the existing APIs, we would love to
+work with you to design a new general purpose API. There are often others are

Review Comment:
   ```suggestion
   work with you to design a new general purpose API. There are often others 
who are
   ```



##########
docs/source/contributor-guide/architecture.md:
##########
@@ -25,3 +25,54 @@ possible. You can find the most up to date version in the 
[source code].
 
 [crates.io documentation]: 
https://docs.rs/datafusion/latest/datafusion/index.html#architecture
 [source code]: 
https://github.com/apache/datafusion/blob/main/datafusion/core/src/lib.rs
+
+## Forks vs Extension APIs
+
+DataFusion is a fast moving project, which results in frequent internal 
changes.
+This benefits DataFusion by allowing it to evolve and respond quickly to
+requests, but also means that maintaining a fork with major modifications
+sometimes requires non trivial work.
+
+The public API (what is accessible if you use the DataFusion releases from
+crates.io) is typically much more stable (though it does change from release to
+release as well).
+
+Thus, rather than forks, we recommend using one of the many extension APIs 
(such
+as `TableProvider`, `OptimizerRule`, or `ExecutionPlan`) to customize
+DataFusion. If you can not do what you want with the existing APIs, we would
+welcome you working with us to add new APIs to enable your use case, as
+described in the next section.
+
+## Creating new Extension APIs

Review Comment:
   I think we should, this comes up fairly often in this context



##########
docs/source/contributor-guide/architecture.md:
##########
@@ -25,3 +25,62 @@ possible. You can find the most up to date version in the 
[source code].
 
 [crates.io documentation]: 
https://docs.rs/datafusion/latest/datafusion/index.html#architecture
 [source code]: 
https://github.com/apache/datafusion/blob/main/datafusion/core/src/lib.rs
+
+## Forks vs Extension APIs
+
+DataFusion is a fast moving project, which results in frequent internal 
changes.
+This benefits DataFusion by allowing it to evolve and respond quickly to
+requests, but also means that maintaining a fork with major modifications
+sometimes requires non trivial work.
+
+The public API (what is accessible if you use the DataFusion releases from
+crates.io) is typically much more stable (though it does change from release to
+release as well).
+
+Thus, rather than forks, we recommend using one of the many extension APIs 
(such
+as `TableProvider`, `OptimizerRule`, or `ExecutionPlan`) to customize
+DataFusion. If you can not do what you want with the existing APIs, we would
+welcome you working with us to add new APIs to enable your use case, as
+described in the next section.
+
+## Creating new Extension APIs
+
+DataFusion aims to be a general-purpose query engine, and thus the core crates
+contain features that are useful for a wide range of use cases. Use case 
specific
+functionality (such as very specific time series or stream processing features)
+are typically implemented using the extension APIs.
+
+If have a use case that is not covered by the existing APIs, we would love to
+work with you to design a new general purpose API. There are often others are
+interested in similar extensions and the act of defining the API often improves
+the code overall for everyone.
+
+Extension APIs that provide "safe" default behaviors are more likely to be
+suitable for inclusion in DataFusion, while APIs that require major changes to
+built-in operators are likely less likely. For example, it might make less 
sense

Review Comment:
   ```suggestion
   built-in operators are less likely. For example, it might make less sense
   ```



-- 
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: github-unsubscr...@datafusion.apache.org

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


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to