Phoenix 1.0 – the framework for the modern web just landed
Posted on August 28th, 2015 by Chris McCord
After a year and a half of work, 2500 commits, and 30 releases, Phoenix 1.0 is here! With 1.0 in place, Phoenix is set to take on the world whether you’re building APIs, HTML5 applications, or network services for native devices. Written in Elixir, you get beautiful syntax, productive tooling and a fast runtime. Along the way, we’ve had many success stories of companies using phoenix in production, and two ElixirConf’s where we showed off Phoenix’s progress.
Before we jump into some of the great things Phoenix has to offer, we owe thanks to the people that helped make this possible.
Though he’ll try to downplay his efforts, José paved the way for Phoenix with a level of contribution that is simply amazing. He not only wrote Elixir, but bootstrapped Phoenix with the Plug library, opened database access with Ecto, and contributed thousands of lines of code to Phoenix itself. Along the way, he crafted Elixir releases and helped build a community that has been such a pleasure to be a part of. Thank you!
The core team devoted many of their nights and weekends to get where we are today. Whether it’s Lance Halvorsen writing the lovely Phoenix guides, Jason Stiebs helping flesh out the initial channels layer, Eric Meadows-Jönsson working on hex.pm and making sure we have graceful fallback for older browsers, or Sonny Scroggin contributing in many areas while training newcomers, these people helped make Phoenix what it is today.
The real-time web
From the beginning, Phoenix has been focused on taking on the real-time web. The goal was to make real-time communication just as trivial as writing a REST endpoint. We’ve realized that goal with channels. This 90 second clip of a collaborative editor should give you a sense of what’s possible:
Beyond the browser
As a “web framework”, Phoenix targets traditional browser applications, but the so-called “web” is evolving. And we need a framework to evolve with it. Phoenix transcends the browser by connecting not only browsers, but iPhones, Android handsets, and smart devices alike. Justin Schneck, Eoin Shanaghy, and David Stump helped Phoenix realize this goal by writing channel clients for objC, Swift, C#, and Java. To appreciate what this enables, Justin demo’d a Phoenix chat application running on an Apple Watch, iPhone, and web browser all powered by native phoenix channel clients:
Productivity in the short term and the long term
In addition to high connectivity, Phoenix gives you a comfortable feature set to get up and running quickly and be productive with your team. But, Software isn’t just about the short-term. Elixir leverages tried and true patterns for long-term project success and maintainability. The Erlang runtime was designed for systems to run for many years, with minimal downtime. Using these patterns and the runtime innovations, you can deploy systems that self-heal, support hot-code uploading, and have capabilities known to support millions of connected users. Out of the box, Phoenix provides:
Project generation with
mix phoenix.new my_app
- Live-reload in development. Make a change to any template, view, or asset and see the results immediately in the browser
- Postgres, MySQL, MSSQL, and MongoDB resources through Ecto integration
Resource generators, such as
mix phoenix.gen.html User users name:string age:integerto bootstrap a project and learn the ins and outs of phoenix best practices
- A precompiled view layer with EEx templates for lightning fast response times, often measuring in microseconds
- Channels for realtime communication
- and more
- The ability to run multiple phoenix applications side-by-side in the same OS process or break a bigger application into smaller chunks with umbrella apps: http://blog.plataformatec.com.br/2015/06/elixir-in-times-of-microservices/
- Erlang OTP tooling to get a live look into your running application and diagnose issues:
We’re just getting started with 1.0. With a strong and stable core in place, we’ll be building Channel Presence features, internationalization, and more. Be sure to register for ElixirConf in October to find out yet unannounced plans beyond Phoenix 1.1 and other neat things happening in the Elixir ecosystem. José Valim is also hosting a Phoenix webinar on Sept 4 to talk about Phoenix and answer viewer questions.
So how can you join in on all this fun? The Phoenix guides will take you through the basics and get you up and running quickly. If you’re new to Elixir, here’s a few resources to get up to speed before jumping into Phoenix:
It has been an amazing ride, and we’re just getting started. Let’s show the world what Elixir and Phoenix can do.