spawnfest / spawnfest.github.io

SpawnFest's website
https://spawnfest.org
9 stars 4 forks source link

Project ideas #123

Closed paulo-ferraz-oliveira closed 3 years ago

paulo-ferraz-oliveira commented 3 years ago

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

paulo-ferraz-oliveira commented 3 years ago

1 read a spreadsheet with emails, names, and other info, and spit out a message that is ready to sent to a potential sponsor at the touch of a button...

paulo-ferraz-oliveira commented 3 years ago

2 a rebar3_vendor (I know one named like this exists already, but it's a coincidence) that takes a bunch of files and changes their names and content to properly vendor them in a consumer.

paulo-ferraz-oliveira commented 3 years ago

3 a rebar3_lfe plugin (use LFE code in your Erlang code) - and all the possible variants for all the possible languages would be other ideas as well

paulo-ferraz-oliveira commented 3 years ago

4 a way to safely store passwords (think transcrypt or git-secret) that is native BEAM: wanna push to a repo but have sensitive info hidden? Use the result of this idea :)

paulo-ferraz-oliveira commented 3 years ago

5 a visual code coverage reporting tool with history

starbelly commented 3 years ago

6 Concurrent release start for OTP applications

paulo-ferraz-oliveira commented 3 years ago

7 a pub-sub lib.

starbelly commented 3 years ago

8 Non-blocking application shutdown in OTP

paulo-ferraz-oliveira commented 3 years ago

9 a way to, given a folder full of random projects (e.g. rebar3 or mix -based) determine what would be the best way to bump dep.s in them: tree analysis + upstream analysis

starbelly commented 3 years ago

10 Markdown lib in erlang

paulo-ferraz-oliveira commented 3 years ago

11 a lib that concentrates good CI practices (testing, analysis, etc.) with an easy way to spawn other lib.s by a template if defines

paulo-ferraz-oliveira commented 3 years ago

12 an Application Performance Monitoring (APM) lib.

paulo-ferraz-oliveira commented 3 years ago

13 a copyright-header-creator lib. (add an easy copyright - or update an existing one - to all your source files)

ferd commented 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.

elbrujohalcon commented 3 years ago

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.

lhoguin commented 3 years ago

Gun could use an event handler that traces HTTP requests/responses and even TLS stuff the same way curl -vvvvvvv does.

hauleth commented 3 years ago

@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:

  1. Distributed systemd scheduler, that would allow me to have multiple machines and use their systemd instance to schedule and manage the applications there. Just BEAM reimplementation of fleetctl from CoreOS
  2. 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.
  3. RSS/email/NNTP client that would work similarly to Hey.com, but would allow reading news and mailing groups in tree-like format.
  4. Vulnerabilities store that would cooperate with Hex about the issues with the projects there. That should cooperate with CycloneDX SBoM and should provide API for GitHub/GitLab to provide the security notifications.
hauleth commented 3 years ago

@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.

lhoguin commented 3 years ago
  1. 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.

kanatohodets commented 3 years ago

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.

wojtekmach commented 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 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.

hauleth commented 3 years ago

@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).

lhoguin commented 3 years ago

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

galdor commented 3 years ago

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.

paulo-ferraz-oliveira commented 3 years ago

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).

https://github.com/lfe-rebar3/rebar3_lfe

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 (?)).

adolfont commented 3 years ago

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.

hauleth commented 3 years ago

@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.

paulo-ferraz-oliveira commented 3 years ago

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...

hauleth commented 3 years ago

@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.

paulo-ferraz-oliveira commented 3 years ago

https://github.com/hauleth/example-lfe

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 😄).

peerst commented 3 years ago

#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

pablocostass commented 2 years ago

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 :)