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