Feathers: An Open-Source Framework for Real-Time Apps and APIs Featuring Server-Agnostic Architecture

Feathers Is An Open Source Framework For Real Time Apps And Rest Apis

TL; DR: Feathers, a framework for creating real-time apps and REST APIs with JavaScript or TypeScript, works with any backend, supporting a wide range of databases and frontend technology out of the box. The framework’s server-agnostic architecture ensures developers can host their apps on servers or peer-to-peer communication systems without having to make changes to the app. With sponsorship opportunities and a clear return on investment, Feathers empowers developers to watch their ideas take flight.

Development frameworks, the foundational tools used to build programs for a specific platform, allow software developers to do away with repetitive tasks and instead focus on app creation.

But not all frameworks are built the same. Case in point: Feathers, a framework for creating real-time apps and REST APIs with JavaScript or TypeScript, provides an advantage over traditional model–view–controller (MVC) and HTTP frameworks.

Rather than working with MVC-style controller actions and routing, or HTTP requests and response protocols, Feathers uses two basic patterns — services and hooks — to focus on application logic independently from how it’s accessed.

“Instead of looking at specific HTTP responses, what we can do is look at the data,” said David Luecke, Open-Sourcer at Feathers. “Feathers will essentially say, ‘Hey, I wanted to find all the messages,’ and it takes care of the parsing, the process of converting to JSON — all the tasks you’d have to do over and over again yourself.”

David Luecke, Open-Sourcer, and Feathers logo

David Luecke, Open-Sourcer at Feathers, gave us the scoop on how the framework stands out among its peers.

The pattern also makes it possible for Feathers to automatically provide REST APIs and real-time WebSocket APIs, provide universal usage on the server and client, and add new communication protocols (such as HTTP2 or GraphQL) without code changes.

At the end of the day, the result is easier and faster development of mobile and web applications. Instead of worrying about authentication, boilerplate code, controller logic, error handling, or routing, developers can use Feathers to jump-start their workflows.

True to its name, Feathers accomplishes all of this while remaining lightweight with a small codebase and API surface. It’s also incredibly flexible, featuring compatibility with nearly any frontend or backend technology and supporting more than a dozen databases.

Helping Developers Streamline Workflows Since 2010

Feathers’ origins date back to 2010 when David was researching various request-response protocols (RPCs) as part of his university coursework in Munich, Germany.

“I started doing some research on XML-RPC, Java Remote Method Invocation (RMI), and other things that help devices that are remote and distributed to communicate and call each other, and began to investigate the commonalities between them,” he said.

At the same time, the REST API was becoming a popular protocol, growing at a faster rate from 2005 to 2013 than any other API. This spike can likely be attributed to increased adoption of mobile devices, as RESTful APIs are known to offer a scalable solution for mobile apps distributed over the internet.

Graphic reading: Introducing Feathers — A framework for real-time apps and REST APIs

The framework is based on David’s thesis research on request-response protocols.

“I included the REST architectural style in the thesis paper I was writing, and I also developed like this common mechanism that allows you to create an endpoint — or whatever you want to expose — without having to worry about how it’s being accessed,” David said. “So you can just swap between XML, RPC, REST, etc. That’s where the idea for the Feathers framework came from.”

In 2013, David and Co-Founder Eric Kryski took the concepts from David’s thesis and used them to create Feathers, which they subsequently released on GitHub. Over the years, the project expanded from a small library into an established open-source framework for building real-time apps (such as chat applications, or Uber-like services), and APIs with a wide array of flexible plugins.

Navigating Challenges in the Open-Source Space

By 2015, David and Eric decided to funnel even more of their time and resources into Feathers in a consistent effort to evolve the framework.

On March 15, 2016, the team released Feathers 2.0, described in a press release at the time as “a flexible, real-time JavaScript framework built on top of Express for the server and as a standalone client for the browser and React Native.”

David said the framework retained its basic, long-standing elements, such as the unified service interface and workflow hooks.

“In 2016, we had some people join the team and pushed for a bigger release,” he said. “The technology didn’t change dramatically for the 2016 release, but the way it was perceived changed. It was a good example of how it’s not just the tech that matters. It’s also the way you present it.”

David told us that, over the years, he’s observed a conceptual shift in the open-source community in terms of how developers view the app-building process.

“Initially, people were super focused on their regular routine — like, ‘I have to do this route, and then I have to handle that request. And then I have to parse this header,’” David said. “I kept emphasizing that that’s the point of using a framework. It’s really nice to see when that clicks with someone, but there’s still a bit of a barrier there.”

The other challenge, he said, is keeping up with the open-source community as it becomes increasingly crowded — though, at the same time, distant.

“Sometimes you don’t hear anything until something breaks, and then you’re getting notices from 100 people,” David said. “If it works, nobody says anything. But if nobody uses it, well, nobody says anything, either.”

Compatible with Servers and P2P Comm Systems Alike

David told us growth is also a challenge for smaller development groups in the open-source space. “The perception is that only Facebook, Amazon, and Google can create serious open-source projects,” he said.

But there’s a good reason to support smaller endeavors. For example, David told us innovative technology like the decentralized web is a low priority to many large corporations because there are currently fewer opportunities to make sales.

“As an individual or small group, even if you have a good idea, people will say, ‘Why don’t I just use AWS Lambda’s serverless computing platform?’” he said. “And they can, but these organizations are mainly interested in making sales. That’s not a bad thing in itself, but it could be a challenge for innovation in the tech space.”

Feathers helps users build real-time apps

Feathers makes creating real-time apps and REST APIs less of a headache.

The Feathers team, on the other hand, is interested in adopting technologies such as the InterPlanetary File System (IPFS), a distributed, peer-to-peer network and protocol used for storing and sharing data.

“Right now, many people are focused on Kubernetes and serverless integration, which is great,” David said. “But the real paradigm shift I’m seeing is in the peer-to-peer communication systems used to build apps that give people access and ownership of their data on a technological level. That’s where I see Feathers in the long term.”

And, because of its server-agnostic nature, developers using the Feathers framework will soon be able to swap out servers for a peer-to-peer communication system without making changes to the application.

Sponsorship Opportunities and an Upcoming Release

Looking for a way to contribute to Feathers? Individuals and organizations that believe in the project’s purpose can easily become sponsors and have their logo featured on Github as a contributing company.

Some donations are currently being used to help fuel the latest release of Feathers. David said with every iteration the team focuses on user pain points and attempts to incorporate solutions to solve them.

“For this release, I’d like to focus on schema definitions, where you define your data schema once and get, for example, SQL database tables and JSON schemas generated for you automatically,” he said. “It’s long overdue and essential in improving the spirit of the framework.”