# What do you think should be in OTP?

**URL:** <https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556>\
**Category:** Chat / Discussions\
**Tags:** community, otp\
**Created:** [November 13, 2021, 6:32pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556 "2021-11-13T18:32:26Z")\
**Posts on this page:** 20\
**Page:** 4

<div class="post-metadata">

**Author:** ![maxlapshin](https://erlangforums.com/user_avatar/erlangforums.com/maxlapshin/32/1593_2.png) [@maxlapshin](https://erlangforums.com/u/maxlapshin)\
**Post date:** [December 6, 2021, 9:17pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/61 "2021-12-06T21:17:59Z")

</div>

Using application:get\_env is just a global variable.

We use language with best-in-class isolation and then jump to global variables.

---

<div class="post-metadata">

**Author:** ![max-au](https://erlangforums.com/user_avatar/erlangforums.com/max-au/32/1627_2.png) [@max-au](https://erlangforums.com/u/max-au)\
**Post date:** [December 7, 2021, 5:20am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/62 "2021-12-07T05:20:18Z")

</div>

> How can I increase it to 2000? Code upgrade?

Code upgrade, indeed!  
Another approach is to have official API to your gen\_server, like `gen_server:call(?MODULE, {set_capacity, 2000}).`

---

<div class="post-metadata">

**Author:** ![vkatsuba](https://erlangforums.com/user_avatar/erlangforums.com/vkatsuba/32/314_2.png) [@vkatsuba](https://erlangforums.com/u/vkatsuba)\
**Post date:** [December 14, 2021, 10:03pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/64 "2021-12-14T22:03:54Z")

</div>

- Interactive documentation - where all examples of the code can be run in documentation web site and take a look to result.
- Interactive tutor - e.g. as implemented for Golang - [A Tour of Go](https://go.dev/tour/welcome/1).  
🙃

---

<div class="post-metadata">

**Author:** ![AstonJ](https://erlangforums.com/user_avatar/erlangforums.com/astonj/32/9_2.png) [@AstonJ](https://erlangforums.com/u/AstonJ)\
**Post date:** [December 15, 2021, 8:03pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/65 "2021-12-15T20:03:48Z")

</div>

2 posts were split to a new topic: [Tryerlang.org - try Erlang in your browser!](https://erlangforums.com/t/tryerlang-org-try-erlang-in-your-browser/814)

---

<div class="post-metadata">

**Author:** ![vkatsuba](https://erlangforums.com/user_avatar/erlangforums.com/vkatsuba/32/314_2.png) [@vkatsuba](https://erlangforums.com/u/vkatsuba)\
**Post date:** [December 17, 2021, 9:58pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/66 "2021-12-17T21:58:31Z")

</div>

**Online Erlang customize builder** - Imagine, you go to the official Erlang website, indicate in an online form under which OS and OS category to make the assembly, indicate which components you want to be in this assembly, press the assemble button and after a few seconds you will receive your own assembly without additional components that you do not use at all in your project 🙃. And something tells me that it is very closely related to [Configuration of Erlang system](https://erlangforums.com/t/configuration-of-erlang-system/432) 😜

---

<div class="post-metadata">

**Author:** ![wingyplus](https://erlangforums.com/user_avatar/erlangforums.com/wingyplus/32/421_2.png) [@wingyplus](https://erlangforums.com/u/wingyplus)\
**Post date:** [December 27, 2021, 7:33am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/67 "2021-12-27T07:33:43Z")

</div>

Yeah. It’s something like that. But it still missing tools around an OTP. For example, a binary tool like `erlang_ls`. 😉

---

<div class="post-metadata">

**Author:** ![vkatsuba](https://erlangforums.com/user_avatar/erlangforums.com/vkatsuba/32/314_2.png) [@vkatsuba](https://erlangforums.com/u/vkatsuba)\
**Post date:** [January 9, 2022, 11:29am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/68 "2022-01-09T11:29:16Z")

</div>

Integration [bootstrap](https://getbootstrap.com/) into [EDoc](https://www.erlang.org/doc/apps/edoc/chapter.html) - for [rebar3](http://rebar3.org/) projects already implemented few great plugins for build beautiful and convenient Erlang documentation

> [@A rebar3\_edoc\_extensions - for build documentation with awesome style!](https://erlangforums.com/t/a-rebar3-edoc-extensions-for-build-documentation-with-awesome-style/583):
>
> Foreword Few days ago we was meet online with @dumbbell to discuss awesome CSS/JavaScript style what he made for amazing library [khepri](https://github.com/rabbitmq/khepri)(here this documentation [https://hexdocs.pm/khepri/](https://hexdocs.pm/khepri/)). I’m ask if he don’t mind if will be created a rebar plugin where any project which uses this plugin can be able to use the same styles - and yey, he wasn’t mind partying_face. Meet new plugin [rebar3\_edoc\_extensions](https://github.com/vkatsuba/rebar3_edoc_extensions)! Usage Add into rebar.config: {project\_plugins, [rebar3\_edoc\_extensions]}. Run command for b…

and

> [@Rebar3\_ex\_doc - a rebar3 plugin for generating documentation using ex\_doc](https://erlangforums.com/t/rebar3-ex-doc-0-2-2-released/850):
>
> [rebar3\_ex\_doc](https://hex.pm/packages/rebar3_ex_doc) - A rebar3 plugin for generating documentation using ex\_doc This plugin uses edoc to generate doc chunks and ex\_doc to craft both html and epub outputs. It should be duly noted that this functionality is thanks to many peoples efforts around [EEP-48](https://www.erlang.org/doc/apps/erl_docgen/doc_storage.html) and not the plugin. In the [EEF build and packaging working group](https://erlef.org/wg/build-and-packaging) we have been planning to make said functionality, which has existed for a while now, available via a rebar3 plugin. rebar3\_ex\_doc makes it easy to get up and going. Per…

I believe will be provided also other similar plugins but what about [Erlang.mk](https://erlang.mk/) projects? The developers and team who use `Erlang.mk` instead of `rebar3` will still experience inconvenience with the old style of documentation ☹ … At the same time @garazdawi already did an amazing job with the integration of `Bootstrap` into [official Erlang web site](https://www.erlang.org/) and we already know how positively the Erlang community reacted to this. I believe that it would be great if `EDoc` also will have `Bootstrap` HTML/CSS/JavaScript stuff for build cross-browser documentation for any existing project 🙃

---

<div class="post-metadata">

**Author:** ![starbelly](https://erlangforums.com/user_avatar/erlangforums.com/starbelly/32/209_2.png) [@starbelly](https://erlangforums.com/u/starbelly)\
**Post date:** [January 9, 2022, 5:58pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/69 "2022-01-09T17:58:30Z")

</div>

I think edoc styles and so forth should be definitely be updated, but I don’t think it obviates the need for using ex\_doc when publishing docs to hex. The docs generated by ex\_doc are more than just pretty 🙂 It’s a standard format. One important aspect is a standardized way of generating links such that packages can link to each other (e.g., type links) on hexdocs.pm.

It’s possible you could have that all in edoc, but that requires edoc not only being hex aware but keeping up with ex\_doc, moving target style.

Users of `erlang.mk` could use ex\_doc right now, if they wanted to FWIW. The instructions in ex\_doc reference rebar3 but could be applied to erlang.mk.

---

<div class="post-metadata">

**Author:** ![josevalim](https://erlangforums.com/user_avatar/erlangforums.com/josevalim/32/353_2.png) [@josevalim](https://erlangforums.com/u/josevalim)\
**Post date:** [January 14, 2022, 8:22am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/70 "2022-01-14T08:22:58Z")

</div>

> [@dumbbell](#):
>
> When more things are bundled together inside Erlang, we would all have to make compromises somewhere between the ease and speed of maintenance/updates to various components and the release engineering of Erlang/OTP. It also adds new commitments and support load on the Erlang/OTP team.

Agreed. Almost all languages that are considered batteries included end-up with unmaintained or outdated modules, which later are deprecated and removed anyway. Less is more!

The community will always be larger than the Erlang/OTP team and it should be on us to provide the missing pieces we find necessary. 🙂

---

<div class="post-metadata">

**Author:** ![wojtekmach](https://erlangforums.com/user_avatar/erlangforums.com/wojtekmach/32/1164_2.png) [@wojtekmach](https://erlangforums.com/u/wojtekmach)\
**Post date:** [January 14, 2022, 7:59pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/71 "2022-01-14T19:59:49Z")

</div>

> [@vkatsuba](#):
>
> **Online Erlang customize builder** - Imagine, you go to the official Erlang website, indicate in an online form under which OS and OS category to make the assembly (…)

This is a really cool idea. Compared to most other ideas in this thread this doesn’t need changes in OTP itself (though OTP xcomp improvements would greatly help) so it’s a great candidate for a community project that maybe would become official one day.

---

<div class="post-metadata">

**Author:** ![starbelly](https://erlangforums.com/user_avatar/erlangforums.com/starbelly/32/209_2.png) [@starbelly](https://erlangforums.com/u/starbelly)\
**Post date:** [January 15, 2022, 4:57pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/72 "2022-01-15T16:57:34Z")

</div>

Yeah, there was a reason I started a thread about what should NOT be in OTP 🙂

---

<div class="post-metadata">

**Author:** ![Hanabi](https://erlangforums.com/letter_avatar_proxy/v4/letter/h/dec6dc/32.png) [@Hanabi](https://erlangforums.com/u/Hanabi)\
**Post date:** [January 16, 2022, 3:49pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/73 "2022-01-16T15:49:30Z")

</div>

I find the idea of adding javascript to edoc egregious. The new [erlang.org](http://erlang.org) looks comparatively worse on browsers like netsurf. If we’ll need spidermonkey or V8 to “properly” view the docs, I’d ask for a reevaluation.

---

<div class="post-metadata">

**Author:** ![Taure](https://erlangforums.com/user_avatar/erlangforums.com/taure/32/846_2.png) [@Taure](https://erlangforums.com/u/Taure)\
**Post date:** [January 19, 2022, 7:54am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/74 "2022-01-19T07:54:23Z")

</div>

> [@vkatsuba](#):
>
> **Online Erlang customize builder** - Imagine, you go to the official Erlang website, indicate in an online form under which OS and OS category to make the assembly, indicate which components you want to be in this assembly, press the assemble button and after a few seconds you will receive your own assembly without additional components that you do not use at all in your project 🙃. And something tells me that it is very closely related to [Configuration of Erlang system](https://erlangforums.com/t/configuration-of-erlang-system/432) 😜

With the customized build do you want them like with a package or src? rpm, Deb or just a tar ball or all combinations. 🙂

---

<div class="post-metadata">

**Author:** ![vkatsuba](https://erlangforums.com/user_avatar/erlangforums.com/vkatsuba/32/314_2.png) [@vkatsuba](https://erlangforums.com/u/vkatsuba)\
**Post date:** [January 19, 2022, 8:35am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/75 "2022-01-19T08:35:17Z")

</div>

> [@Taure](#):
>
> With the customized build do you want them like with a package or src? rpm, Deb or just a tar ball or all combinations.

All combinations or as minimum - as more as possible 🙃

---

<div class="post-metadata">

**Author:** ![crownedgrouse](https://erlangforums.com/user_avatar/erlangforums.com/crownedgrouse/32/591_2.png) [@crownedgrouse](https://erlangforums.com/u/crownedgrouse)\
**Post date:** [January 19, 2022, 1:24pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/76 "2022-01-19T13:24:54Z")

</div>

Agree with essen.  
We should better remove things or at least move high level applications out of Erlang (megaco, jinterface etc…).  
But some things need to be added to Erlang MHO :

- missing compression algorithms, in particular lzma
- exec command for os with exit code
- namespace concept to allow use of modules with same name but from two (or more) different sources.

---

<div class="post-metadata">

**Author:** ![max-au](https://erlangforums.com/user_avatar/erlangforums.com/max-au/32/1627_2.png) [@max-au](https://erlangforums.com/u/max-au)\
**Post date:** [January 20, 2022, 7:31pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/77 "2022-01-20T19:31:25Z")

</div>

+1 for having a proper “os:cmd” that returns exit code, stdin/stdout/stderr separately, and has somewhat more control. I have a dozen of those spread over various places in code.

---

<div class="post-metadata">

**Author:** ![meox](https://erlangforums.com/user_avatar/erlangforums.com/meox/32/476_2.png) [@meox](https://erlangforums.com/u/meox)\
**Post date:** [January 20, 2022, 8:25pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/78 "2022-01-20T20:25:01Z")

</div>

3 new guards:

- is\_ip(IP): is\_ipv4(IP) orelse is\_ipv6(IP)
- is\_ipv4(IP)
- is\_ipv6(IP)

---

<div class="post-metadata">

**Author:** ![hauleth](https://erlangforums.com/user_avatar/erlangforums.com/hauleth/32/251_2.png) [@hauleth](https://erlangforums.com/u/hauleth)\
**Post date:** [January 21, 2022, 12:43am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/79 "2022-01-21T00:43:09Z")

</div>

It can be easily implemented as a macro. And in fact it is implemented as macro in at least one place in ERTS.

---

<div class="post-metadata">

**Author:** ![meox](https://erlangforums.com/user_avatar/erlangforums.com/meox/32/476_2.png) [@meox](https://erlangforums.com/u/meox)\
**Post date:** [January 21, 2022, 10:49am UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/80 "2022-01-21T10:49:25Z")

</div>

yes what I’m looking for is a simple way to use that macro/guards without reimplementing it over and over

---

<div class="post-metadata">

**Author:** ![juhlig](https://erlangforums.com/user_avatar/erlangforums.com/juhlig/32/837_2.png) [@juhlig](https://erlangforums.com/u/juhlig)\
**Post date:** [January 21, 2022, 2:50pm UTC](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556/81 "2022-01-21T14:50:09Z")

</div>

> [@meox](#):
>
> 3 new guards:
> 
> - is\_ip(IP): is\_ipv4(IP) orelse is\_ipv6(IP)
> - is\_ipv4(IP)
> - is\_ipv6(IP)
> 
> yes what I’m looking for is a simple way to use that macro/guards without reimplementing it over and over

IMO, no, this should definitely _not_ be among the collection of guards. Guard BIFs as such are supposed to be very low-level, close-to-the-language, general-purpose things, operating on the basic data types. IP addresses are a higher-level construct which is restricted to the `inet` context. I understand the wish, but those should not be guards.

What I would like to see, however, are _functions_ in `inet` by which a term can be checked for IP-ish-ness. That wouldn’t be as convenient as guards, but much better than repeated manual reimplementations.

As for IP-checking macros… There are some in `kernel/src/inet_int.hrl`, namely `?ip/1` for IPv4 and `?ip6/1` for IPv6 address tuples. I wouldn’t encourage using them in user code, though, they are really meant for `inet` internals. As such, they also have a loophole in that they will happily result in `true` for tuple sizes equal to _or greater than_ 4 (or 8 for IPv6), as long as the first 4 (8) elements are integers in the range `0..16#FF` (`0..16#FFFF`).

[Previous page](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556.md?page=3)

[Next page](https://erlangforums.com/t/what-do-you-think-should-be-in-otp/556.md?page=5)
