Hi Isuru and Lahiru, I'd be happy to contribute to this. Would be great if there's an initial plan on how we approach this in a phased/modular manner. That'll help get everyone on the same page and can also support in onboarding new contributors.
Best. On Sat, Dec 14, 2024 at 2:41 AM Isuru Udana <isud...@apache.org> wrote: > Hi Lahiru, > > I like the idea. Can you explain how you can contribute to this? And we > need to see whether there are more contributors willing to contribute to > this in case we decide to move forward. > > Thank you. > > On Thu, Dec 12, 2024 at 7:55 PM Lahiru Madushanka <gdlmadusha...@gmail.com> > wrote: > >> Dear Apache Synapse Development Team, >> >> I hope this email finds you well. My name is Lahiru Madushanka, and I’m >> an enthusiastic supporter of the Apache Synapse project. I’m writing to >> propose exploring the use of GO (Golang) in the Synapse project to improve >> its performance and runtime efficiency. >> >> GO, developed by Google, is a statically typed, compiled language >> designed for simplicity, performance, and scalability. Several benefits >> make it worth considering for Apache Synapse. >> 1. Performance and Binary Size Advantages >> >> GO’s compiler generates highly optimized binaries that are compact and >> self-contained, eliminating the need for large dependencies or runtime >> environments. This approach can significantly reduce the size of Synapse’s >> distributable artifacts while improving startup times and memory >> consumption making it container friendly. >> 2. Speed Through Goroutines and Channels >> >> One of GO’s standout features is its efficient concurrency model, >> centered on goroutines and channels. Goroutines allow us to handle >> thousands of concurrent operations with minimal overhead, as they are much >> lighter than traditional threads. This is particularly beneficial for >> high-performance middleware like Synapse, which often deals with multiple >> simultaneous tasks such as routing, message transformation, and integration. >> 3. Backwards Compatibility with Existing DSL >> >> We can design the new system to use the same DSL as the current >> implementation, ensuring seamless backward compatibility. This will allow >> users to migrate to the new system without requiring changes to their >> existing configurations or workflows. >> 4. Maintainability and Developer Productivity >> >> GO’s clean syntax and emphasis on simplicity reduce the cognitive load >> for developers, leading to faster development cycles and easier >> maintenance. Its strong standard library and built-in tools for testing, >> benchmarking, and profiling further support robust development practices. >> This could foster greater collaboration within the community and attract >> new contributors. >> Suggestions >> >> To assess the potential benefits of using Go, I recommend beginning with >> a minimal prototype that includes API support and a few commonly used >> mediators. This will allow us to benchmark its performance and resource >> usage against current implementations. >> >> We can then iteratively expand the functionality in manageable >> increments, ensuring that each addition is carefully optimized to avoid >> significant performance degradation. >> >> >> I understand that introducing a new codebase into the project is a >> significant decision. However, I believe the potential benefits for Apache >> Synapse’s performance, scalability, and developer experience make this >> exploration worthwhile. >> >> Thank you for considering this suggestion. I would be happy to >> collaborate on any initial discussions or prototyping efforts. Please let >> me know your thoughts or if further details are required. >> >> Best regards, >> >> Lahiru Madushanka >> >> > > -- > *Isuru Udana* > VP, Apache Synapse > Member, Apache Software Foundation; http://www.apache.org > > *email: isud...@gmail.com <isud...@gmail.com>* cell: +94 77 3791887 > > -- *Nuwan Jayawardene* https://www.linkedin.com/m/in/nuwanjaya