# Are those downsides still valid today?

**URL:** <https://discourse.elm-lang.org/t/are-those-downsides-still-valid-today/6887>\
**Category:** Learn\
**Created:** [February 8, 2021, 6:44am UTC](https://discourse.elm-lang.org/t/are-those-downsides-still-valid-today/6887 "2021-02-08T06:44:18Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![Lucas\_Payr](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.elm-lang.org/lucas_payr/32/4993_2.png) [@Lucas\_Payr](https://discourse.elm-lang.org/u/Lucas_Payr)\
**Post date:** [February 8, 2021, 8:59am UTC](https://discourse.elm-lang.org/t/are-those-downsides-still-valid-today/6887/3 "2021-02-08T08:59:08Z")

</div>

# Debugging looks awful and is largely unhelpful

Still the case, though if you do it right, it’s just as in every other language

**Js**

```auto
x = 1; y = 0;

fun1(x); //changes both x and y
Console.log("x", x);
fun2(y,x); //changes both x and y
Console.log("y", y);

```

**Elm**

```auto
{-| This example showcases how you would simulate mutable data.
This is NOT the default way how you would program in elm.
-}
{x = 1,y = 2}
|> (\model -> 
    { model
    | x = fun1 model.x |> Debug.log "x"
    }
  )
|> (\model -> fun2 model.x model.y)
|>(\model ->
  let
    --This is a nice way to quickly print something
    _ = Debug.log "y" model.y
  in
  model
  )

```

# You cannot install Elm packages from anywhere other than the official package repository.

You can clone a package and then add the path to your elm.json file. But this was always the case.

# Most of the tutorials / examples online are out of date due to v0.19

Nope. Personally I like to point people towards [Beginning Elm](https://elmprogramming.com/) for a good introduction to Elm. And from there you will find lots of other tutorials.

# The docs are incomplete

Sadly yes. There is still an [example](https://guide.elm-lang.org/webapps/url_parsing.html) at the end of the official **Guide** that’s just a “Todo”. Here is a blog post discussing the [missing example](https://korban.net/posts/elm/2018-10-12-elm-guide-missing-part-url-handling-browser.application/).

# Elm core development lives in a walled garden that you can’t touch, even if you wanted to

True. Here is a post by evan about it:

> [@What is "constructive" input?](https://discourse.elm-lang.org/t/what-is-constructive-input/977):
>
> It seems like a lot of folks are confused about their relationship to Elm. I have a lot of thoughts on this topic, and I am sharing some subset in a relatively unfiltered way. I’m not looking for feedback. I just want to share a mixture of facts and feelings to help contextualize an experiment in increasing the amount of moderation we do. Core People At this point in time, the set of core folks includes at least: Evan Richard Aaron Brian Luke Ilias Noah These are people who make actual cho…

# Pull requests being open for 2+ years

Still true. Here’s an [official response](https://github.com/elm/expectations/blob/master/batching.md). TLTR: It’s intended.

# Runtime errors can happen

True. But not the way described in the blog post. If you use Elm each day, expect to get maybe one runtime error every year or so. Most of them are bugs and looking into the corresponding issue will give a fast fix for it. That said i would not know any of them of by heart.

# Missing key features

> At the time of writing, Elm has no implementation for server side rendering, web sockets or localStorage.

- **Server side rendering** - Not on the roadmap and never has been.
- **web sockets** - [Can/Should be done by using Ports](https://github.com/elm-lang/websocket)
- **local storage** - [Can/Should be done by using Ports](https://elmprogramming.com/saving-app-state.html)

You can do a lot of things using Ports. There are some things that are definitely NOT to complicated for using Ports. But it those cases you should look into web components. If you find something that can’t be done using Ports or web components, it would be worth writing a blog post about it. It would definitely be interesting to read.

# Lacks the ecosystem of its siblings

True. I’d say Elm as fewer packages then React (The community is also smaller) but the quality of the packages and specially the documentations is higher. That said you can use React and Elm together.

Also, as a side note: Elm Awesome is not the right places to find packages. Instead, use [Elm Catalog](https://korban.net/elm/catalog/)

---

_[View the full topic](https://discourse.elm-lang.org/t/are-those-downsides-still-valid-today/6887)._
