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

Reply via email to