Extension Guide
Dubbo Use microkernel + plugin design pattern. Microkernel is only responsible for assembling plugins, the functions of Dubbo are implemented by extension points(plugins), which means that all functions of Dubbo can be replaced by user customized extension.
Dubbo Ecosystem
We recommend you to put extension to Dubbo ecosystem. Using this pattern will keep the core repository cleaner and decrease the maintains work. With less code also speed up core repository build process.
Dependency
Implement your own Dubbo extension, in general is just dependence on API jar correspond to what you want. For example:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-serialization-api</artifactId>
<version>${dubbo.version}</version>
</dependency>
Src Guide
Usually, implement special extension, just need reference the Developer Guide docs. Implement necessary interface and adapt extension to dubbo. Besides, some others should be considered:
- Well tested. You should write unit test and mock test to eliminate potential bugs.
- No warning, if some warning cannot to avoid, use @SuppressWarnings to suppress it, but do not abuse it.
- README. Add necessary readme to show how to use your extension, and something to take notice.
- License. Make sure of use Apache License 2.0.
Notify the Community
- Commit your code to GitHub.
- Join the mail list (recommended). HowTo
- Send email to dev@incubator.dubbo.apache.org to notify the community
- Usually, after sending email, community will discuss your extension, and Administrators of dubbo group will contact you for transfer project to dubbo ecosystem.
Transfer Project to Dubbo Group
- Administrators of dubbo group will ask you, grant your project owner to dubbo.
- Administrators of dubbo group will create a new project under dubbo group and invite you join the project.
- Once you accept the invitation, you can transfer your project to new project under dubbo group.
- Existing members of dubbo group will do the code review. After that you may make some improvement to code.