You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by ILYA Khlopotov <ii...@apache.org> on 2025/12/02 22:16:27 UTC

Clouseau 3.0.0 Released – Modernized Search Component for CouchDB

Hello all,

We’re pleased to announce the release of Clouseau 3.0.0, a major update to
the
Lucene-based full-text search engine that integrates with CouchDB via
Dreyfus.
While Clouseau has always been considered a plugin for CouchDB, it is not
part
of the Apache CouchDB project itself. It is maintained by the IBM Cloudant
team, who have focused on delivering a modernization that preserves the same
functionality and API while improving maintainability. The previous
implementation served well for years but relied on an unsupported language
and
outdated runtime components. This release addresses long-standing challenges
with outdated components and operational risk, ensuring a reliable
foundation
for the future.

# What’s New

- Modern Foundation - The legacy Scala code running on Java 8 has been
replaced
  with a newer Scala running on Java 21. Communication between Erlang and
the
  JVM now uses the fork of jInterface (part of Erlang/OTP), eliminating
  long-standing maintenance of unsupported Scalang library. Deprecated
  asynchronous scheduler is replaced with modern async framework.

- Preserved Compatibility - Despite the architectural changes, the new
version
  maintains existing APIs, Lucene integration, and on-disk index formats.
This
  means no re-indexing, no client-side changes, and a seamless rollout.

# Engineering Highlights

- Re-implement Scalang abstractions using https://zio.dev/
- Implemented actor framework with API similar to erlang's gen_server
- Implement Erlang Distribution Protocol using jInterface.
- Extended jInterface with full support of monitors.
- Greatly improved test coverage.
- Better introspection capabilities (via remsh and erl_call)
- Source code is available under Apache 2.0 at cloudant-labs/clouseau.
- clouseau-ctr application to simplify operations.

# Updated components

- Java - JDK 7 updated to JDK 21.0.12
- Scala - 2.9.1 updated to 2.13.16
- com.yammer.metrics - replaced with zio.metrics 2.0.0
- jetlang - 0.2.12 replaced with zio 2.1.16
- scalang 2.9.1 - removed from the stack
- org.slf4j 1.7.32 - replaced with zio.logging 2.5.0 and tinylog 2.7.0
- commons-configuration 1.8 - replaced with zio.config 4.0.4

Feedback and questions are welcome. If you’d like to review the code or
learn
more about the design decisions, please check out
https://github.com/cloudant-labs/clouseau repository.

Thanks,
ILYA Khlopotov

Re: Clouseau 3.0.0 Released – Modernized Search Component for CouchDB

Posted by Jan Lehnardt <ja...@apache.org>.
Congratulations, Ilya & team, this surely was a herculean task.

Best
Jan
— 
> On 2. Dec 2025, at 23:16, ILYA Khlopotov <ii...@apache.org> wrote:
> 
> Hello all,
> 
> We’re pleased to announce the release of Clouseau 3.0.0, a major update to
> the
> Lucene-based full-text search engine that integrates with CouchDB via
> Dreyfus.
> While Clouseau has always been considered a plugin for CouchDB, it is not
> part
> of the Apache CouchDB project itself. It is maintained by the IBM Cloudant
> team, who have focused on delivering a modernization that preserves the same
> functionality and API while improving maintainability. The previous
> implementation served well for years but relied on an unsupported language
> and
> outdated runtime components. This release addresses long-standing challenges
> with outdated components and operational risk, ensuring a reliable
> foundation
> for the future.
> 
> # What’s New
> 
> - Modern Foundation - The legacy Scala code running on Java 8 has been
> replaced
>  with a newer Scala running on Java 21. Communication between Erlang and
> the
>  JVM now uses the fork of jInterface (part of Erlang/OTP), eliminating
>  long-standing maintenance of unsupported Scalang library. Deprecated
>  asynchronous scheduler is replaced with modern async framework.
> 
> - Preserved Compatibility - Despite the architectural changes, the new
> version
>  maintains existing APIs, Lucene integration, and on-disk index formats.
> This
>  means no re-indexing, no client-side changes, and a seamless rollout.
> 
> # Engineering Highlights
> 
> - Re-implement Scalang abstractions using https://zio.dev/
> - Implemented actor framework with API similar to erlang's gen_server
> - Implement Erlang Distribution Protocol using jInterface.
> - Extended jInterface with full support of monitors.
> - Greatly improved test coverage.
> - Better introspection capabilities (via remsh and erl_call)
> - Source code is available under Apache 2.0 at cloudant-labs/clouseau.
> - clouseau-ctr application to simplify operations.
> 
> # Updated components
> 
> - Java - JDK 7 updated to JDK 21.0.12
> - Scala - 2.9.1 updated to 2.13.16
> - com.yammer.metrics - replaced with zio.metrics 2.0.0
> - jetlang - 0.2.12 replaced with zio 2.1.16
> - scalang 2.9.1 - removed from the stack
> - org.slf4j 1.7.32 - replaced with zio.logging 2.5.0 and tinylog 2.7.0
> - commons-configuration 1.8 - replaced with zio.config 4.0.4
> 
> Feedback and questions are welcome. If you’d like to review the code or
> learn
> more about the design decisions, please check out
> https://github.com/cloudant-labs/clouseau repository.
> 
> Thanks,
> ILYA Khlopotov