ChifiSource Community Update - Toolips Development Insights
Written on
Chapter 1: Introduction to Toolips
Greetings, everyone! The ChifiSource team has been hard at work, and I'm thrilled to share some fantastic updates! One of the standout projects is Toolips. For those unfamiliar, Toolips is a flexible and expandable full-stack web development framework tailored for the Julia programming language. The primary goal is to enable functionalities typically associated with traditional Julia web development, which often involves constructing HTTP pipelines for data, while simultaneously offering a robust foundation for extending its features. Essentially, instead of needing to master multiple web frameworks that function quite differently, Toolips consolidates all these capabilities into one extensible framework.
If this piques your interest, or if you're simply curious, check out Toolips on GitHub!
Section 1.1: The Ecosystem of Toolips
While extendability is a significant advantage, it does require a robust ecosystem. Fortunately, the ecosystem has made impressive strides. We begin with the core package, Toolips itself. Although there haven’t been many groundbreaking updates, several bug fixes have been implemented, along with a revamp of Styles. Previously, styles had to be linked to a Component using the style! method, which required additional coding just to animate a servable. Now, styles can be defined using their actual names. Version 0.1.3 also introduces a new animate! binding that allows for direct animation of components rather than having to animate a style first.
Another exciting addition is the sub-style feature, which facilitates the creation of quick, event-driven styles, such as those activated on hover. This is achieved through a high-level syntax using the colon method. Below is an example taken from the Olive.jl project that illustrates this innovation:
function iconstyle()
s = Style(".material-symbols-outlined", cursor = "pointer")
s["font-size"] = "100pt"
s:"hover": ["color" => "orange"]
return s
end
This simplifies the process of adding style attributes under specific conditions. The syntax is sleek, allowing you to define your style, specify the event name, and then provide a vector of attributes, similar to how the style! method operates for direct component styling. This feature is incredibly helpful for achieving precise styles!
Section 1.2: Documentation and Extensions
Looking ahead, the documentation is set to undergo a significant transformation, promising to be comprehensive and detailed. It will cover all aspects of Toolips across various contexts, complete with examples, including full-stack applications for users to reference, deployment scenarios, and documentation for each extension developed by ChifiSource. I'm particularly enthusiastic about this improvement, as increased accessibility is a priority for enhancing my software!
There are numerous extensions being developed as well. The latest additions, currently in various stages of readiness, include ToolipsSession, Memwrite, Markdown, and Base64 extensions. Each serves a unique purpose, and I wrote a recent article detailing the latter three, which would be an excellent starting point for those wanting to learn more!
If you're interested in the Session extension and its application in creating full-stack web applications with Julia, I recommend checking out my article on Pasta.jl, a full-stack text editor I developed while working on that package.
Now, regarding future enhancements, we’re working on a new Component parser, which is currently managed through EzXML.jl. While it performs adequately, it lacks the speed and flexibility needed for our application. I plan to update how Component Modifications are processed to significantly boost performance, especially when dealing with large amounts of data.
Chapter 2: New Projects and Future Goals
Excitingly, I originally designed Toolips with the vision of creating a web development framework capable of building a notebook server. Inspired by Pluto.jl, I saw an opportunity to incorporate many unique features into my own notebook server, leading to the development of Olive.jl.
The primary hurdle right now is the development of another package I plan to use, IPy.jl, from the data ecosystem. However, my main focus remains on stabilizing the extensions mentioned earlier and refining Toolips until it reaches a maintainable state.
There’s a lot on my plate, including two more Toolips projects: Prrty.jl and ToolipsApp.jl. The latter serves as the Toolips website, which is currently outdated and in need of significant updates.
Further down the line, I have two additional extensions in the works—ToolipsAuth and ToolipsCanvas—that aim to enhance the module's capabilities even further! I’m genuinely excited to roll out these releases and explore the extensive features already available. My passion for software and Julia drives me, and creating tangible web applications is incredibly rewarding. Toolips simplifies this process, making it even better!
In Conclusion
Expect to hear more from me, with updates every week around Monday or Tuesday. I’m committed to maintaining this content flow while providing substantial progress on my software projects. Thank you for supporting me and Toolips by following my journey! Have a fantastic day, everyone!