You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+35Lines changed: 35 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -101,9 +101,44 @@ sequenceDiagram
101
101
S3Bucket->>User: S3 Object
102
102
```
103
103
104
+
# Authoring Plugins ✍️
105
+
106
+
## Overview 🌀
107
+
108
+
The following includes examples and resources for writing Plugins (in Go, Python, or any other [supported language](https://grpc.io/docs/languages/)!)
109
+
110
+
-[gRPC Example](https://github.com/hashicorp/go-plugin/tree/main/examples/grpc) (this is largely what Funnel Plugins is based off of, along with this [manager](https://github.com/eliben/code-for-blog/blob/main/2023/go-plugin-htmlize-rpc/plugin/manager.go#L28-L83) snippet by [Eli Bendersky](https://eli.thegreenplace.net/2023/rpc-based-plugins-in-go/) for loading the plugin binaries)
111
+
112
+
-[Intro](https://github.com/hashicorp/go-plugin/blob/main/docs/extensive-go-plugin-tutorial.md) (super helpful reference from beginning to end)
113
+
114
+
## Communicating with Funnel
115
+
116
+
> [!WARNING]
117
+
> TODO: Add the following to the docs 🚧
118
+
> - API "contract" between the Plugin and Funnel Server":
119
+
> - What exactly will the Plugin require for inputs and outputs (`Config`)?
120
+
> - What functions will plugin authors need to implement (e.g. `Get`)?
121
+
122
+
## Python 🐍
123
+
124
+
-[Writing Plugins Without Go](https://github.com/hashicorp/go-plugin/blob/main/docs/guide-plugin-write-non-go.md) (written by Mitchell Hashimoto one of the original co-founders of Hashicorp along with Armon Dadgar! :exploding_head:) (edited)
125
+
126
+
## gRPC + Protobuf ️🚀
127
+
128
+
> [!TIP]
129
+
> Understanding gRPC and protobufs isn't necessary to writing plugins, but it can be helpful when errors or bugs arise 🐛
130
+
131
+
Under the hood, all communication between the Plugin and the Funnel Server happens over gRPC using Protocal Buffers (*protobufs*).
132
+
133
+
-[Protobuf Overview](https://protobuf.dev/)
134
+
135
+
- Tutorials for [Go](https://protobuf.dev/getting-started/gotutorial/) and [Python](https://protobuf.dev/getting-started/pythontutorial/)
136
+
137
+
-[Awesome gRPC](https://github.com/grpc-ecosystem/awesome-grpc#protocol-buffers) — pretty up-to-date resource for all things Protobuf and gRPC! 😎
0 commit comments