Talks
Speakers
Events
Topics
Sign in
Home
Talks
Speakers
Events
Topics
Leaderboard
Use
Analytics
Sign in
Suggest modification to this talk
Title
Description
http://rubykaigi.org/2015/presentations/frsyuki Plugin architecture is known as a technique that brings extensibility to a program. Ruby has good language features for plugins. RubyGems.org is an excellent platform for plugin distribution. However, creating plugin architecture is not as easy as writing code without it: plugin loader, packaging, loosely-coupled API, and performance. Loading two versions of a gem is a unsolved challenge that is solved in Java on the other hand. I have designed some open-source software such as Fluentd and Embulk. They provide most of functions by plugins. I will talk about their plugin-based architecture.
Date
Summarized using AI?
If this talk's summary was generated by AI, please check this box. A "Summarized using AI" badge will be displayed in the summary tab to indicate that the summary was generated using AI.
Show "Summarized using AI" badge on summary page
Summary
Markdown supported
In the presentation titled "Plugin-based software design with Ruby and RubyGems," Sadayuki Furuhashi discusses the advantages and challenges of utilizing plugin architectures in software applications, particularly within the Ruby ecosystem. The speaker, who is also the founder of Tri Data and has designed software such as Fluentd and Embulk, emphasizes the importance of extensibility in programming through the use of plugins. Key points discussed include: - **Definition and Importance of Plugin Architecture**: Plugin architecture allows applications to extend functionalities without altering the core software. Examples include browsers with add-ons and WordPress with open-source plugins. - **Robust Plugin Design**: Two approaches are highlighted: traditional extensible architecture, which increases host complexity; and purely plugin-based architecture, which relies on a thin core and modular design. - **Key Techniques**: - **Dependency Injection**: This programming technique separates interfaces from implementations, facilitating testing and plugin replacements. - **Dynamic Plugin Loading**: This allows the core application to manage and execute plugins seamlessly, promoting modularity without altering the core functionality. - **Real-world Implementations**: Furuhashi uses Fluentd and Embulk as examples. - **Fluentd**: Serves as an event collector, utilizing over 300 open-source plugins to enhance its data collection abilities without the need for extensive scripting. - **Embulk**: A bulk data loader that supports multiple data sources through flexible input and output plugins, ideal for handling large datasets efficiently. - **Challenges**: Specific hurdles include managing library conflicts from multiple plugins depending on the same libraries and keeping plugins updated to avoid performance issues. In conclusion, Furuhashi encourages the audience to explore plugin architectures for their extensibility benefits and proper data handling, inviting collaboration and proposed solutions to common challenges in plugin implementation.
Suggest modifications
Cancel