# [[kOH 82 - Experimental modules with Théo]]
[On internal-docs](obsidian://open?vault=internal-docs&file=company%2Fdevrel%2FProjects%2FOffice%20Hours%2FkOH%2082%20-%20Experimental%20modules%20with%20Th%C3%A9o)
![[kOH 82 - Experimental modules in k6.png]]
<iframe width="560" height="315" src="https://www.youtube.com/embed/0-dfzCUV7m4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Topics
- Introduction to Théo
- Previously: [kOH 40 - Théo](kOH%2040%20-%20Théo.md) on scheduling in k6 (executors, stages, scenarios, changing schedules at runtime)
- What are experimental modules?
- First introduced in v0.40: https://github.com/grafana/k6/releases/tag/v0.40.0
- v0.42 introduced more features for websockets: https://github.com/grafana/k6/releases/tag/v0.42.0
- v0.43 introduced browser and tracing modules: https://github.com/grafana/k6/releases/tag/v0.43.0
- Why they're experimental and not just extensions
- Extensions still require a few extra steps to build, and this adds to friction
- How do we decide what should be bundled in with the experimental modules?
- They're essentially extensions covering a space we care to cover as a product, and where were care to converge towards a high level solution
- Why they're experimental and not part of core
- k6 philosophy of keeping things composable and performant
- Will they all experimental modules eventually get bundled into core?
- Timeline-- when they'll go mainstream: we don't know!
- The contract we establish for experimental modules, what kind of feedback we're looking for
- Existing experimental modules, what they're for, and how to use them
- Out now
- redis: https://k6.io/docs/javascript-api/k6-experimental/redis/
- websockets: https://k6.io/docs/javascript-api/k6-experimental/websockets/
- timers: https://k6.io/docs/javascript-api/k6-experimental/timers/
- tracing: https://k6.io/docs/javascript-api/k6-experimental/tracing/
- browser: https://k6.io/docs/javascript-api/k6-browser/
- Async/await: what is it and what does it have to do with experimental modules?
- Demo (Marie)
- Which ones are being worked on?
- JavaScript WebCrypto module, to land in v0.44.0 (but in a limited capacity)
- How to submit feedback
- What are some modules YOU want to see?
- What if someone wants an extension to be an experimental module?
- Next week: Grafana Cloud k6
- We're releasing something we're all really excited about. It'll put k6 on the map for all Grafana users.
## Log
- [[Théo Crevon|Théo]]
- Generalist, but not an expert at anything
- Process around what becomes experimental?
- No real stable process-- it's ad hoc
- Baseline: extensions that are regularly maintained, by us or by other companies
- Most of tracing came from [xk6-distributed-tracing](https://github.com/grafana/xk6-distributed-tracing)
- Async/await
- Instructing JavaScript runtime (virtual machine that runs the code) to start doing something, and then when you see the await word, do what's there. But you can keep going.
- Marie likes them better than callbacks (confusing) and then promises (better but not as good) then async await
- Higher maintainability and readability
- [Otel demo](https://otel-demo.field-eng.grafana.net/)
- Environment variables for browser: only for browser, not other experimental modules.
- Future?
- Something Théo is working on: WebCrypto. The current crypto module supports mostly secure crypto calculations and random digest calculations, but now they're moving to WebCrypto standards.
- exportign cryptographic keys
- elliptic curve algorithms
- encryption and signing
- Will allow users who rely for their applications to sign certain packets in a certain way to fulfill those actions
- Open the door to more extensions to extend this further.
- What theo wants
- http3
- mqtt
- kafka
- tcp
- dns
- What I want
- xk6-kubernetes
- html dashboards
- xk6-disruptor
- kafka
- http3
- No clear cut process for what "graduates" from experimental and what gets into core.
- Shared assumption that most will get into core.
- Feature requests
- support? public forum?
- We need an experimental section in docs
- experimental modules
- also experimental features like Prometheus Remote Write output.
- At the moment, we have experimental stuff on the api page. There should probably be an experimental page that is separate.
- Marie has raised an issue in docs about this, but it's more for UX issues. (annoying to collapse/expand the sidebar menu).
- Discussion for experimental page is not an issue yet.
- When disruptor is moved to experimental, there will be the same issue as browser too.
- I should raise it
#todo/k6/next
- [ ] Raise a docs issue to have a separate "experimental" page that includes experimental features like Prometheus Remote Write output, experimental modules. This is confusing for browser and it will also be confusing for xk6-disruptor when it's ready.
## Post-production
- [ ] Add this to my vault somewhere.
- [x] Add this to nicolevanderhoeven.com.