[pt-BR] Open Source Friday Brasil 🇧🇷 com Arthur Fücher
By GitHub
Key Concepts
- Closure: A functional programming language, a dialect of Lisp, hosted on the JVM.
- Rapple (Read-Eval-Print Loop): An interactive programming environment where code is read, evaluated, its result is printed, and the loop repeats.
- Rapple-Driven Development (RDD): A development methodology where the Rapple is integrated into the development workflow for interactive coding and testing.
- Language Server Protocol (LSP): A standardized protocol that allows IDEs to communicate with language servers, providing features like autocompletion, static analysis, and code navigation.
- Open Source: Software whose source code is made available for anyone to view, modify, and distribute.
- Plugin Development (IntelliJ): Creating extensions for the IntelliJ IDE, which often involves understanding its architecture and APIs, and can involve multiple programming languages like Kotlin and Closure.
Summary
This YouTube live session features a conversation with Artur Fux, a developer passionate about the functional programming language Closure and open source contributions. The discussion covers Artur's personal interests, his professional work with Closure at Nubank, his journey into open source, and his project: the "Closure Rapple IntelliJ" plugin.
Introduction and Personal Background
The live begins with a warm welcome and an acknowledgment of the long-awaited nature of the session, which had been postponed multiple times. Artur is introduced as a friend and a proponent of "different" programming languages. He shares personal details, highlighting his role as a father to Laura, his enjoyment of nerdy hobbies like board games and card games (especially Magic: The Gathering), and his appreciation for coffee and beer as conversation starters. He admits to a tendency to say "yes" to community initiatives.
Professional Journey and Closure
Artur has been working with Closure for about five and a half years as a developer at Nubank. His programming career began with ADVPL, a proprietary language from Totvs, before transitioning to Closure. He explains his introduction to Closure was through Nubank, not by directly working there at the time. The Closure South 2019 conference, hosted by Nubank, was a pivotal event where he discovered and became interested in the language. He humorously notes that he undertook his job application process at Nubank using Closure, a risky move he doesn't necessarily recommend.
Closure is described as a functional language from the Lisp family, known for its immutability and functional paradigm. It runs on the Java Virtual Machine (JVM), allowing for seamless interoperability with Java code. The host clarifies that while Closure is not widely used, it's a powerful tool when adopted by companies like Nubank.
Open Source Journey and Contributions
Artur's engagement with open source began with a desire to stay updated, stemming from his early experience with proprietary languages. He actively contributed to open source projects, particularly focusing on translating content into Portuguese. He recalls participating in translation efforts for projects like Wikipedia with communities like Node.js Brasil. His personal projects were also open-sourced with the primary goal of sharing knowledge.
The "Closure Rapple IntelliJ" Plugin
The core of the discussion revolves around Artur's open-source plugin, "Closure Rapple IntelliJ." He explains the motivations behind its creation:
- LSP Support in IntelliJ: Artur needed Language Server Protocol (LSP) support for Closure within IntelliJ IDEA. While an existing plugin provided Closure support, it didn't leverage LSP. IntelliJ's native LSP support was either absent or limited to paid versions.
- Linter and Code Standardization: LSP enables features like linting, autocompletion, and static analysis, which are crucial for maintaining code quality and consistency in collaborative projects. The lack of LSP support meant losing these benefits.
- Rapple Integration: A key aspect of Closure development is the Rapple (Read-Eval-Print Loop), an interactive coding environment. Artur wanted to integrate Rapple functionality directly into IntelliJ for a more fluid development experience.
- Pet Project: He also sought an open-source project to work on and contribute to.
He acknowledges the foundational work of Eric, the maintainer of Closure LSP, who created the initial Closure LSP plugin for IntelliJ. Artur collaborated with Eric to add the Rapple integration, leading to the development of "Closure Rapple IntelliJ."
The plugin works in conjunction with the "Closure LSP IntelliJ" plugin. The LSP plugin provides standard IDE features (syntax highlighting, static analysis, formatting, navigation), while "Closure Rapple IntelliJ" enables Rapple interaction.
Technical Details and Demonstration
Artur delves into the technical aspects of the plugin:
- IntelliJ Plugin Architecture: He explains that IntelliJ plugins are often built using Java and Kotlin. His plugin uses a small amount of Kotlin for specific functionalities and generates Java bytecode from Closure code, allowing it to integrate with IntelliJ's Java-centric architecture.
- Rapple Functionality: He demonstrates how the plugin allows users to evaluate code snippets directly within the IDE. This includes defining functions, calling them, and even updating existing functions dynamically.
- Rapple-Driven Development (RDD): The demonstration highlights how RDD allows developers to write code, evaluate it in real-time, and see the results immediately without leaving the editor. This is particularly useful for testing, debugging, and exploring code.
- Local vs. Remote Rapple: The plugin supports both local Rapple instances (running directly within the IDE) and remote Rapple connections, enabling interaction with running applications.
- Dynamic Code Loading: Artur showcases the ability to load and evaluate entire files or specific code blocks within the Rapple, even updating running code without restarting the application. This is achieved through dynamic class loading and evaluation at runtime.
- Windows Compatibility: He mentions a recent fix that enables the plugin to run on Windows, which he himself uses.
Open Source Contribution and Community
Artur encourages contributions to the "Closure Rapple IntelliJ" plugin, noting that while it requires understanding IntelliJ's plugin development, there are many opportunities for improvement. He emphasizes that contributions in Portuguese are welcome, even though the primary documentation is in English. He also highlights the existence of "good first issues" for newcomers.
Learning Closure
For those interested in learning Closure, Artur recommends the Closure Brasil community. He points to their website (closurebrasil.com.br), YouTube channel, and communication platforms (Telegram, Discord) as excellent resources. He showcases the Closure Brasil website, which is built with ClosureScript and is itself open source, allowing users to interact with its features.
Closing Remarks and Fun Facts
The session concludes with a Q&A. Artur reveals he was a bassist in a band but admits to not knowing the songs and playing in small, obscure venues. He also shares his strong preference for "cajuzinho" (a traditional Brazilian sweet) as his favorite dessert, lamenting its disappearance from children's parties. He theorizes that the lack of such sweets in childhood might contribute to the perceived sadness and issues in American culture. The host expresses gratitude to Artur and the audience, promising a return to the "Open Source Friday" format and hinting at future discussions on InnerSource.
Chat with this Video
AI-PoweredHi! I can answer questions about this video "[pt-BR] Open Source Friday Brasil 🇧🇷 com Arthur Fücher". What would you like to know?