Today marks an important milestone as we begin the planning stages for Jaseci 2. Over the past three years, Jaseci has enabled the creation of numerous sophisticated production products, showcasing its power and versatility. However, during this time, we discovered a design flaw that affects the interaction of inheritance with Jaseci’s walker abstraction. This revelation presents us with a unique opportunity to address this issue and incorporate our extensive learnings and architectural insights into a comprehensive overhaul of the programming model and language. In this blog post, I will delve into the motivations behind Jaseci 2 and the exciting journey that lies ahead.
The Inheritance Conundrum
One of the key challenges we encountered with Jaseci’s walker abstraction is its interaction with inheritance. While inheritance is implemented seamlessly for Jaseci’s node and edge abstractions, complications arise due to the presence of unnamed code blocks, such as node blocks, and the code residing between them. This ambiguity surrounding inheritance overriding can lead to confusion and hinder the clarity of code structure. Recognizing the importance of resolving this issue, we aim to refine the implementation in Jaseci 2, aligning it with the elegance and integrity demonstrated by other abstractions.
A Holistic Approach to Improvement
The need to rectify the aforementioned flaw has inspired us to embark on a journey of comprehensive improvement. Jaseci 2 will not be limited to addressing this singular concern; it will serve as an opportunity to incorporate all the knowledge and architectural insights we have gained over the years. We are committed to making groundbreaking changes and enhancements to the fundamental programming model and language. By leveraging the experience gained from developing Jaseci and Jac, we aim to lay the foundation for an even more powerful and intuitive programming environment.
Following in Python’s Footsteps
The evolution of programming languages is an iterative process, and it is not uncommon for new languages to undergo significant transformations as they mature. Python, the currently most successful language in the world, went through its own journey of evolution from versions 1 to 2 to 3. Just as Python embraced change to meet the needs of developers, we believe that a similar rapid evolution is essential for a young language like Jac. Jaseci 2 will be our vehicle to drive innovation and ensure the longevity of the Jaseci ecosystem.
Learnings and Insights
Through the development and deployment of six production-scale commercial products on Jaseci and Jac, both myself and the core developers have acquired invaluable insights. Our learnings extend beyond technical aspects and encompass good practices for scaling a large open-source project, creating accessible and adoptable programming models, and the paramount importance of comprehensive documentation right from the project’s inception. We are eager to leverage these learnings to refine the development process and make Jaseci 2 an exemplary open-source project.
The Journey Ahead
I am thrilled to embark on this exciting journey into Jaseci 2. The forthcoming updates hold great promise for data-spatial programming and will pave the way for even more innovative applications. It is our collective ambition to craft a programming model and language that not only empowers developers but also catalyzes the growth of the entire Jaseci community. Rest assured, while we focus on Jaseci 2, support and development for Jaseci 1.x will continue in parallel, ensuring a seamless transition for our users.
In a Nutshell…
The planning stages for Jaseci 2 mark a pivotal moment in the evolution of the Jaseci ecosystem. By addressing the design flaw in the interaction of inheritance with Jaseci’s walker abstraction, we lay the groundwork for a refined and more intuitive programming experience. We are excited to utilize our extensive learnings and architectural insights gained from developing production-scale commercial products on Jaseci and Jac. Jaseci 2 represents a significant step forward, not only in terms of technical improvements but also in scaling the project, enhancing accessibility, and emphasizing the importance of comprehensive documentation. As we embark on this journey, we are committed to fostering a vibrant community and ensuring that Jaseci remains at the forefront of data-spatial programming. Together, let’s shape the future of Jaseci and unlock endless possibilities for developers worldwide.