With this post, we are announcing that the fp-ts
project is officially merging with the Effect-TS ecosystem, and that the author of the project, Giulio Canti (@gcanti), is being welcomed into the Effect organization!
Acknowledging the Past
Giulio Canti certainly requires no introduction. He pioneered (and continues to lead) exploration of how the TypeScript type system could be used to build powerful, composable, and type-safe libraries for the JavaScript ecosystem. His work has brought us several notable projects, such as fp-ts
and io-ts
, which have been instrumental in making functional programming in TypeScript more accessible and practical for developers.
Through his work, he has shown that types can be used not only for simple type-checking, but also for expressing complex relationships and building high-level abstractions. Giulio's passion for functional programming and his dedication to open-source software inspired a whole new generation of influential projects, such as zod
, and has caused many developers to explore new ways of building applications. His impact on the TypeScript community is undeniable.
Where Are We Now?
As a functional programming community, we have learned a lot since the initial inception of fp-ts@1.0.0
. It became clear that plain functional programming, as it is found in other languages, cannot be directly adapted to work with TypeScript. We realized that we should be working to embrace the strengths of TypeScript as a language while avoiding its weaknesses. This has been the focus of the Effect organization for the past few years.
When @gcanti decided to begin working on new versions of the core fp-ts
libraries, we all saw it as an opportunity to increase collaboration between Effect and fp-ts
. We wanted to center the focus of fp-ts
by clarifying core design principles, unify the fp-ts
and Effect ecosystems to provide a more seamless developer experience and make our libraries accessible to a wider audience.
As the target user group shifted from functional programming experts to mainstream TypeScript users, we had to adapt our libraries to be cohesive, useful, and easy to adopt. We want to ensure that our ecosystem of libraries is accessible to developers who may not have extensive experience with functional programming. It became increasingly necessary to integrate fp-ts
and Effect and the lines between the two were becoming less and less distinct.
The Future
For this reason, we have made the decision to unite and collaborate on effect
as a generational project that aims to serve a wide audience. The goal is to provide a comprehensive suite of solutions that cover everything from data modeling and serialization to effect execution, query optimization, cluster management, workflows, and much more. By combining our expertise and resources, we can create a more cohesive and powerful ecosystem of libraries that are accessible and useful to developers of all levels.
The Effect community is committed to building high-quality, type-safe, and composable libraries for building applications, and this merge will only serve to strengthen that mission. We can't wait to see what kind of innovations this merger will bring!
You can follow our all of our progress on GitHub.
We also have a thriving community on Discord - come join us!
Also, don't forget to sponsor Giulio's work on GitHub!
Top comments (8)
It's going to be huge!
I’ve been a big fan of Giulo’s work since 2014 and I can’t wait to use all the goodness that effect will provide to the broader TypeScript audience.
this was a long time coming ;)
So well written. Thank you!
This is already looking VERY good!
Great :-)
I don't know too much about the effect side of this coin.
How come fp-ts is integrating into Effect, but not integrating Effect into fp-ts?
Because fp-ts contains 1% of the future of effect and the target is mainstream developers not FP devs