news.volyx.in

How we got to LiveView (fly.io)

802 points by klohto · 1826 days ago · 283 comments on HN

Article summary

The article discusses the development of LiveView, a feature of the Phoenix web framework for Elixir, which allows for real-time updates and stateful applications. The author, Chris McCord, shares his journey from working with Ruby on Rails to creating Phoenix and LiveView. LiveView simplifies development by removing the need for REST, JSON, and GraphQL APIs, and instead uses a stateful process to synchronize the browser with the server. This approach enables developers to build dynamic, real-time applications with less complexity.

Main themes

  • LiveView development
  • Elixir and Phoenix
  • Real-time applications
  • Concurrent programming
  • Background job processing
  • Scalability and performance
  • Code structure and syntax
  • Framework comparison
  • BEAM ecosystem advantages
  • Application design trade-offs

What commenters say

  • Some developers appreciate the simplicity and scalability of LiveView, making it a clear winner for certain applications.
  • Others argue that the benefits of LiveView are exaggerated, and that similar results can be achieved with other frameworks, such as Rails.
  • The use of Elixir and Phoenix can simplify the development of concurrent and real-time applications, but may require additional infrastructure for background jobs.
  • Some developers find the code structure and syntax of Phoenix and Elixir to be unfamiliar and potentially confusing, especially for small projects.
  • The choice between using LiveView and traditional APIs depends on the specific needs of the application and the trade-offs between complexity and scalability.
  • Background job processing can be handled within the Elixir application using libraries like Oban, but some argue that separating workers from the main app is a better design.
  • The BEAM ecosystem provides a natural expression for concurrent and real-time applications, but may not be a significant advantage for all use cases.