Skip to content

Commit 9bcd572

Browse files
authored
Update README.md
1 parent ada523b commit 9bcd572

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,44 @@ sequenceDiagram
101101
S3Bucket->>User: S3 Object
102102
```
103103

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! 😎
104138
# Additional Resources 📚
105139

106140
- https://github.com/hashicorp/go-plugin
107141
- https://pkg.go.dev/github.com/hashicorp/go-plugin
108142
- https://eli.thegreenplace.net/2023/rpc-based-plugins-in-go
109143
- https://github.com/eliben/code-for-blog/tree/main/2023/go-plugin-htmlize-rpc
144+

0 commit comments

Comments
 (0)