-
Notifications
You must be signed in to change notification settings - Fork 196
Feature table redesign #498
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
It looks very nice! I think maybe we should have the ability for a project to belong to more than a single category? For instance, Owi features both a "standalone runtime", and some "tooling" (symbolic execution, formatter etc.). |
|
wasm2c probably belongs more in "standalone runtimes" than "tools" (maybe both, but if I had to pick one it would be "standalone runtimes"). |
d1099e6 to
10dd2fb
Compare
|
Thanks everyone for taking a look! I've pushed my revised version: same link as before. Outdated demo videodemo.webm
Should be fixed now!
Good catch! Now the notes are fixed to the left side on mobile view (just like the row headers), with maximum width restricted to viewport, should be a lot better now.
Makes sense, I now have "Standalone runtimes" and "Embedded runtimes", although the latter one is currently unused: there are some library-only engines out there, but everything on the table right now have a CLI binary.
Good point, fixed!
This is quite curious, the foreground text color is supposed to automatically change due to the But anyway, I felt like the shadow DOM implementation is becoming more trouble than it's worth, so I decided to get rid of it. Dark mode should be a lot better now!
Yeah definitely tricky to get borders to look right in dark mode. I tried using striped rows like before, but can't get it to look good with the new design either. So went with a new approach. Let me know how it looks now!
I appreciate the feedback on tooltips, it's true that they're quick and intuitive for inspecting multiple cells. My main concern with the intuitiveness of the click-to-expand pattern is the lack of affordance, i.e. it's not obvious that the cells can be clicked. This is especially true for touch screen users, who don't see hover states. I've made two changes to mitigate the issue:
I felt the display-on-hover tooltips might be a bit too attention grabbing. I'd expect that most of our visitors won't be interested in the exact way to enable experimental features. Consider the possible user stories:
In all of these scenarios, information like "This feature requires flag
There are definitely some blurry lines here. I think a good way to approach classification is to consider the categories from a practical standpoint. In my view,
I feel this distinction matters a lot because, developers generally have little control over what runtimes and/or versions their user is using. That's why resources like caniuse.com and this feature table is especially useful for decision making. In contrast, developers have full control over toolchains involved in the development process. If a feature I want is only available in latest I'm not super familiar with Owi so might be missing nuance there, but just from looking over the documentation, the project seems to really focus on the development phrase:
While it's true that the symbolic execution engine can execute code (really cool concept btw!), my impression is that it's mostly not designed for use in a production wasm environment, which is why I think it fit the Tools category better according to the reasoning above. There is also another important practical consideration here. The primary motivation for adding the categories is to display fewer columns by default, so some kind of differential treatment is unavoidable here. Owi aside, it's also true that wasm2c (while self-identifying as a tool as well) does generate binaries that run in production (broadly speaking, even though it might not fit the narrow definition of a runtime). But by the same token, Binaryen includes a tool Apologies for the long-windedness, I thought I should give my two cents and it turned out like this😂. |
Yes, what I meant is: there is a symbolic interpreter in Owi ( |
|
As you're touching the CSS anyways, the wazero logo almost disappears in dark mode. Not sure if anyone from wazero reads this and can advise on branding guidelines, but a simple invert for this particular logo would likely do the job. |
|
Latest preview: still the same link.
Ah yes I missed that, thanks for pointing it out! Yeah that makes sense, if nobody objects I'll added Owi to the Standalone Runtimes category as well. The table now supports specifying multiple categories, with the first one being primary. If both Runtimes and Tools are selected, Owi will be listed under Tools. If Tools is not selected, Owi will be listed under Runtimes. That should hopefully be a consistent way to handle everything.
Done!
Looks like a Safari quirk with SVG sizes, should be fixed now! With the design issues mostly settled, I will start working on polishing and getting the code ready for review. Thanks again for all the feedback! |
|
wasm2c would still like to be in "standalone runtimes" instead of "tools," please. (The output of wasm2c is not really usable for anything except running it.) I do think it's great to have a "tools" category -- there should definitely be a column for the Bytecode Alliance wasm-tools (and probably the CG WABT tools as well). E.g. both wasm-tools and WABT implement a wasm2wat/wat2wasm, wasm-validate, etc. This can be a separate PR after this goes in. |
Got it. The table now shows 14 columns by default; we might need to come up with something else soon, but that can be left to the future. |
| table th { | ||
| font-weight: 600; | ||
| padding: 8px 12px; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've disabled the line breaks, and the text does look better without. Still, the fact that the column is more than two times wider than the others looks a bit off to me. Not sure how I feel about it 🤔 I guess it's a fine trade-off either way
|
Some ideas:
|
|
I'm finished with accessibility and tested it using NVDA with Chrome and Firefox on Windows. Latest preview: link
Sticky headers can be quite tricky to implement with just CSS. It's easy for row headers because the table itself overflows on the x-axis. But on the y-axis, the table doesn't overflow, the entire viewport does. I tried a few things, but there seems to be no way to implement it without JavaScript, as far as I'm aware.
Great idea, done! |
| .content.firstElementChild.cloneNode(true); | ||
| const url = new URL(location.href); | ||
| if (queryKeys.length) { | ||
| url.searchParams.set('categories', queryKeys.join(',')); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| url.searchParams.set('categories', queryKeys.join(',')); | |
| queryKeys.forEach((queryKey) => url.searchParams.append('categories', queryKey)); |
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams/append
| function loadSelectedCategories(allCategories) { | ||
| const names = new URLSearchParams(location.search) | ||
| .getAll('categories') | ||
| .flatMap((values) => values.split(',')) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| .flatMap((values) => values.split(',')) |
Search params will be categories=browsers&categories=tools with the previous changes so we don't need flatMap any more.




Preview
Online: https://wasm-website-preview.pages.dev/features/
Motivation
Design decisions
Web Browsers,Standalone Runtimes,Tools). While this does the job for now, I'm not super in love with this design and would welcome ideas.Standalone Runtimescurrently dominate while the others are sparse. This would worsen as more runtimes are added.Standalone Runtimeshave too many columns and the other two too few. We would still run into the columns problem in the future, when there're more server runtimes added.Current status
This is still a work-in-progress, the code is not ready yet,
and I'd appreciate early feedback on whether the overall direction looks reasonable. I know large changes can be difficult to review with the project's limited bandwidth. If an incremental path would be preferable, I'm happy to take that route instead. I just don't have a clear idea to do this cleanly under the constraint of the existing code, so suggestions are very welcome.Thanks everyone for the input! I'm working on polishing and getting it ready for reivew.Remaining work