Closed paulo-ferraz-oliveira closed 3 years ago
A library to access certificate bundles from the operating system rather than having to carry them with the application. This is a total nightmare on some OSes though.
I'll throw a bunch of ideas here… I didn't check if there's already something like that out there, but if there are… teams can build these anyway, just for the fun of it or to give it a different BEAM-ish spin.
Gun could use an event handler that traces HTTP requests/responses and even TLS stuff the same way curl -vvvvvvv
does.
@paulo-ferraz-oliveira
Application Performance Monitoring (APM) lib
There is OpenTelemetry
a rebar3_lfe plugin (use LFE code in your Erlang code)
https://github.com/lfe-rebar3/rebar3_lfe
@ferd
A library to access certificate bundles from the operating system rather than having to carry them with the application. This is a total nightmare on some OSes though.
I was thinking about it as well, however it would work only on Windows and macOS machines, as neither Linux nor *BSD have single CA store that could be used. So while on Windows and macOS we can provide functions to check validity of certs, on other OSes it would be guessing until we find matching store.
My ideas that I wanted to test out during this SF:
@lhoguin
Gun could use an event handler that traces HTTP requests/responses and even TLS stuff the same way
curl -vvvvvvv
does.
I think that such project would suit better for GSoC, because SpawnFest is more about creating new projects. It could be done by adding telemetry
to Gun.
- ASCIIDoc formatter in Erlang, as I do not really like Markdown/CommonMark as a documentation format. No support for backward-compatible extensions is biggest con.
https://github.com/ninenines/asciideck
Gun could use an event handler that traces HTTP requests/responses and even TLS stuff the same way
curl -vvvvvvv
does.I think that such project would suit better for GSoC, because SpawnFest is more about creating new projects. It could be done by adding
telemetry
to Gun.
It doesn't have to be built-in, and I have no plans to add telemetry
or other to my projects. Gun already has an interface exposing just about everything so telemetry
users can build on top of that.
Riffing off of Paolo's #12: a library to aggregate crashes and stacktraces, so a human operator (or a UI, like observer / LiveDashboard) can view a table of the top X process crashes in time period Y, along with their stacktraces.
Bonus points if it is filterable by application, MFA, or otherwise searchable in some way (e.g., text search against the stacktraces). Perhaps visualizable in a table like this:
Top crashes last 30 minutes: | Count | Application | Top of the stack | MFA |
---|---|---|---|---|
491 | :hamster_shop_ui | (RuntimeError) OH NO | HamsterShopWeb.PageLive.handle_event/3 | |
30 | :hamster_shop_cron | (UndefinedFunctionError) function :ets.new/1 is undefined or private | HamsterCron.aggregate_purchases_for_report/2 |
...
I'm not super familiar with SASL, but maybe this idea is somewhat similar to the SASL report browser, or BigWig's report browsing.
A library to access certificate bundles from the operating system rather than having to carry them with the application. This is a total nightmare on some OSes though.
I was thinking about it as well, however it would work only on Windows and macOS machines, as neither Linux nor *BSD have single CA store that could be used.
@ferd @hauleth I was experimenting with it the other day and came up with https://github.com/wojtekmach/system_castore with just the macOS and basic Linux support for now. If you have any feedback or ideas, feel free to submit new issues or comment on https://github.com/wojtekmach/system_castore/issues/1. If such project would be useful for rebar3 in particular, happy to rewrite it in Erlang to make it trivial to vendor in.
@kanatohodets there are solutions like Sentry, I doubt that SpawnFest could result with something more interesting than that (unless someone has really novel idea how to improve that).
Calendar library with TZ, sub second and anything else calendar
is currently missing. (Bonus points if it can be integrated directly into calendar
later on.)
Unicode manipulation library. The string
module does not provide a number of operations that have to be implemented by hand (such as removing accented characters). (Bonus points if it can be integrated directly into string
later on.)
Alternatively, support for UTF-16/UTF-32.
cc @galdor
Thank you Essen.
Regarding unicode
, the most useful part would be support for Unicode codepoint properties: having them means it becomes possible to implement various ICU algorithms such as normalization or boundary analysis (i.e. word or sentence breaking). Binding libicu is of course possible, but it is a huge PITA due to the way the library handles memory.
Support for decoding/encoding UTF-8 from/to various other character encodings would also be useful, for example when dealing with email data.
There is OpenTelemetry
Hm... APM's not mentioned on the README, though. I'll have to dig in to see the capabilities. (I've been meaning to try it out as a general tool, nonetheless).
I read the doc.s and couldn't find an example of how I'd import LFE into Erlang (like I do with rebar_mix
, for example). Must've skipped something (or it otherwise does not do this (?)).
Something like Hedy but for Elixir https://www.hedycode.com/.
Hedy is gradual programming language
OK, maybe that's too much for one spawnfest team, but maybe it would be possible to create a site like https://www.hedycode.com/hedy?lang=en where ther resulting code looks like Elixir.
@paulo-ferraz-oliveira
APM's not mentioned on the README
What people mean by "APM" is traces. And that is the main goal of OpenTelemetry and currently only finished part of the specs. Rest of pillars (metrics and logs) is still in the works.
I read the doc.s and couldn't find an example of how I'd import LFE into Erlang
Just define LFE module and then call it lfe_module:function()
. Just see the Hello BEAM project by @wojtekmach.
maybe it would be possible to create a site like https://www.hedycode.com/hedy?lang=en where ther resulting code looks like Elixir.
Website allowing for running Elixir code in browser would be awesome. Languages compiled to machine code have these (Play Rust and GoLang Playground) so I do not see why Elixir couldn't have one. Maybe Lumen will help with that.
What people mean by "APM" is traces.
I know what APM is 😄 I just didn't read the README completely, and stated a fact: it doesn't say APM anywhere. If only time was infinite...
Just define LFE module and then call it lfe_module:function(). Just see the Hello BEAM project by @wojtekmach.
That's a nice project, and the concept is the same, but it doesn't show how to use rebar_lfe
to import LFE to Erlang (I don't mean the BEAM generically, but Erlang). (unless it does, and I couldn't find it). 😕 No matter, I'll try this in my own time, when I find it...
@lhoguin
Alternatively, support for UTF-16/UTF-32.
There is unicode:characters_to_binary/3
that supports it. This module also supports normalisation.
it doesn't show how to use rebar_lfe to import LFE to Erlang
Well, as long as the compiler ran by Rebar produces .beam
file the Erlang will not care. Proof of concept - https://github.com/hauleth/example-lfe. You can call it easily both ways, and if you want, you can make it a dependency of your project and it should work without problems as well.
This is the life! Thanks. Will go into "Ref. repo.s". @starbelly, we could even try to find some space in EEF to promote this type of stuff: "We support the ecosystem, ... and here are example on how to use multiple languages in the same project". (e.g. erlef/beam-interop - and then we'd pull from the various existing repo.s with a table of correspondence, 30*29 😄).
#14 Leex column number support
Currently Leex https://erlang.org/doc/man/leex.html the lexical analyser generator for Erlang does not support column numbers for the generated scanners. The returned tokens contain only a line number and not a tuple of {line(), column()}
This doesn't matter for the Erlang compiler because it doesn't use a leex generated scanner but all languages that do use leex can't support column numbers in error messages because of that. For backwards compatibility this should probably be optional.
To make it useful this should aim getting towards a PR against OTP
Hello there! 👋
I am reviving this old issue for a SpawnFest unrelated matter. The Erlang Ecosystem Foundation is applying for this year's GSoC and I was wondering if any of the ideas you all proposed would be something you would like to mentor? If that is the case, please do open an issue at https://github.com/erlef/gsoc/issues :)
I think it'll work better if we put those here (instead of pull-requesting); we can then sort out some (or even leave all) and update the website. (or even create a wiki page and point there). @pablocostass @starbelly @filipevarjao