ramonmeffert / elm-gossip Goto Github PK
View Code? Open in Web Editor NEWA user-friendly web tool for exploring dynamic gossip.
Home Page: https://r3n.nl/elm-gossip/
License: GNU General Public License v3.0
A user-friendly web tool for exploring dynamic gossip.
Home Page: https://r3n.nl/elm-gossip/
License: GNU General Public License v3.0
i.e. even if the input is something like Fxl fEXl fL
, generate a string like Acd aBCd aCD D
(or its numerical equivalent)
If the app can be used on mobile devices, it can be used in more scenarios by more people.
While typing in the input fields, the errors show immediately when there is an error. This can give users the wrong impression that their input is wrong before they are even done typing, causing them to think there is something wrong even though they weren't done typing. A short delay before showing errors could solve this.
Using elm-test or something similar to make sure the possible calls that are presented are the correct ones for the protocol. See also https://github.com/m4lvin/GoMoChe/blob/master/test/results.lhs
Gossip graph input: A⎵B⎵C
is accepted as an input, but A⎵⎵B⎵C
and A⎵B⎵C⎵
are not. This should not be as strict. A similar problem might exist with the Call Sequence input.
Instead of the error being just a string, make it a record so the rendering can be improved. Something like:
type alias Error =
{ title : String
, message : String
, cause : String
, advice : String
}
title
attributes can be helpful in explaining the UI. Right now, there are some elements that do have a title attribute, but many don't.
Elements that benefit from title
attributes:
<input>
, <button>
, <select>
+ <option>
)<button>
s to make them more semantically correct anyway though)It would be very nice if you could use cmd / ctrl + z (undo) and cmd / shift + z / ctrl + y (redo) to undo or redo the most recent actions.
A gossip graph like Abc ABc abC
cannot result from an initial gossip distribution Abc aBc abC
(i.e. every agent only knows their own secret). It might be a good idea to show a warning for this.
Based on the entered call sequence, list the resulting graphs
Probably just (de)serialize to JSON somehow (to do after #7)
I.e. a way to combine constituents in the UI to create a protocol
The protocol editor is potentially a bit intimidating, especially for new users. It might be nice to hide it somehow, for example by showing by default just the dropdown with the available protocols, along with an edit button that toggles the protocol editor.
I thought I had fixed this bug, but if you take the "All Secrets" example no call sequences will be permissible, according to the program.
update
function in mainAlso #21
03-20-123 0-1-2-3
) or alphabetic (Abc ABC abC
)You can click the calls in the call history section, but you can't click them in the list of possible calls. This is counterintuitive and should be fixed.
Browser.sandbox
is generally considered too limited. Changing to a different program type is somewhat involved, so doing it earlier is better – some functionality is not available in sandbox.
Works on Nxy now, should work on N^sigma xy
Something like webpack or gulp. https://github.com/elm-community/elm-webpack-loader might be interesting. The yarn tasks are getting a bit out of hand
Right now, the graph disappears when an error occurs in the input. It would be better if the graph just would not change when the input is wrong.
Turns out saving bidirectional relations only on one agent isn't great.
So you can just click an example and get it to show on the page
Changes lookup time of the last call from O(n)
to O(1)
. It seems like the last call is needed (way) more frequently than the first call.
It would be nice to show the version number in the GUI. At this moment, this would need to be done manually. I will look into using either Elms versioning system (elm bump
etc), but I'm not sure that'll work for this since that is aimed at APIs. Another would be defining it in package.json
and providing it as a flag to Elm or something.
The code to create GraphViz code already exists, so this is pretty easy. However, the GraphViz graph will look (significantly) different from the graph rendered on the page. That might be unexpected.
The information about the graph graph relations (i.e. weakly/strongly connected, sun graph) is unclear.
To solve the first issue, it might be a good idea to move this information below the graph and just have the expanded view be the one visible all the time. To solve the second issue, another ?
button could be added to that section with some information on what these properties represent and why they might be useful in the context of gossip graphs/protocols.
To do after #24
A page for a more in-depth explanation of what is happening on the page
Add some information about the what and why of the project. Also probably mention some of the important packages used and include a license
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.