# Surfer meeting notes
This is the agenda/minutes for bi-weekly meetings for Surfer development discussions. Anyone who is interested in working on Surfer is more than welcome to join!
The meetings take place roughly every other ~~Wednesday~~ Tuesday (except Dec. 16) at 20:00 CET on https://meet.jit.si/moderated/9f0bd2e2d9c6e38f1e2fa87fc2747b3abc1d12e5709f2ea9cb518656987dafc7
Calendar link (ICS/Ical): https://calendar.google.com/calendar/ical/d647b1431fcab73daa7450580e0e5f5c54fc19837d4ffbcd8a297d38d2faf91e%40group.calendar.google.com/public/basic.ics
## Future topics
- Create LinkedIn "company"? (Post updates etc)
## Summer of Code Ideas
- Tree widget for hierarchy/variables
- Only drawing relevant parts (using https://docs.rs/egui/latest/egui/containers/scroll_area/struct.ScrollArea.html#method.show_rows)
- Multi-selection
- Adding waves
- As groups
- Add to other windows (list etc not yet developed)
- Handling records and arrays as variables
- Python translators
- Multiple translators possible to load
- Sigrok support
- Require stateful translators
- Sigrok support require a way for translators to get access to the whole variable
- Probably one would like to cache the translated result and run sigrok-like translators in a separate thread to build the cache
- Group translators
- Be able to define how a group should be drawn and translated
- Can be used for records/arrays
- Differences betwen variables
- Preference system/dialog
- Ideally autogenerated from config file
- Suitable setting widgets
- Load from file
- Save to user config file
- Better VS Code integration
- Save state file
- Proxy for Surver connections
- Configuration
- Run sucl-scripts in Surfer from text editor
## 10/02/2026
## 27/01/2026
- Artifact expiration and cleanup
- We currently have 36 GB of old artifacts.
- Store latest successful build in main?
- Expire MR artifacts after a month?
- Keep all artifacts from tagged versions.
Good idea to cleanup. Should be enough to keep releases (but also make sure that all artifacts, including built binaries are in the releseses).
- Two bachelor project groups will work on Surfer during the spring
- Integration with NVC (and general approach for other simulators)
- Collaborative debugging
- Postpone release two weeks?
- Would like to get the mappings translator in, but no time to fix it before Thursday...
Get the new logo in at least and then we'll see how easy it is to release a new version...
## 13/01/2026
- [Group translators](https://gitlab.com/surfer-project/surfer/-/issues/490)
- Merge requests
- [Add remix icons for scopes and variables in hierarchy view](https://gitlab.com/surfer-project/surfer/-/merge_requests/835)
- Nice improvement. Will be useful with color in the long run (and SVG if someone insists).
- [Support creating commands for approximate user state](https://gitlab.com/surfer-project/surfer/-/merge_requests/834)
- A bit of discussion about use case, but in general positive.
- Probably also useful to be able to save this file in non-WASM.
- [Mnemonic translator](https://gitlab.com/surfer-project/surfer/-/merge_requests/757)
- Call it "mapping translator", which will olny be used in the code and documentation anyway.
- [Added a `config_dir` function to the translator extension API](https://gitlab.com/surfer-project/surfer/-/merge_requests/777)
- Good (maybe change directory name as discussed)
- [File history](https://gitlab.com/surfer-project/surfer/-/merge_requests/680)
- Look at removing index_map
- [Allow translators to specify a sub-translator](https://gitlab.com/surfer-project/surfer/-/merge_requests/672)
- [Add index to VariableRef](https://gitlab.com/surfer-project/surfer/-/merge_requests/814)
- Consider serializing the index for less possible breakage later
- Keyboard shortcuts
## 30/12/2025
- Merge requests
- [Mnemonic translator](https://gitlab.com/surfer-project/surfer/-/merge_requests/757)
- Format is good now
- Should we do a two-stage as GTKWave?
## 18/12/2025 (Thursday)
- Should we deprecate `surfer server` and refer to `surver` only?
- A bit of work to handle arguments etc.
- Would need a separate config file (which is still needed)
- Let's deprecate.
- Merge requests
- Analog drawing
- Merged.
- Multi-file support for surver
- Probably OK.
- Event drawing
- Andreas will have a look.
- Transition values
- Display the setting somehow to avoid confusion.
- Tracebacks
- Andreas will selfmerge after rebase.
- Release 0.5
- Blog post
- Remove old artifacts? 32 GB now...
- Andreas found a solution.
- Google Summer of Code?
- Think about good ideas.
- Logo
- Andreas provides some suggestions
## 3/12/2025
- Change weekday?
- Yes. Tuesdays. Except next time, when it will be a Thursday.
- Can/should we establish an email adress where people can send non-working waveform files that they do not want to publish in public?
- It is possible to create confidential issues. Create an issue template that informs about this.
- Version 0.5: Target release date 2025-12-18 (or at least before Christmas)?
- Yes
- What should an "enum/mnemonic" file format look like? Reference: https://gitlab.com/surfer-project/surfer/-/merge_requests/757
- Some discussions, but will be postponed.
- Analog drawing MR: https://gitlab.com/surfer-project/surfer/-/merge_requests/767
- Looks promising. Merge soon and one can work on any outstanding/found issues.
- Surver improvement MRs:
- Reload: https://gitlab.com/surfer-project/surfer/-/merge_requests/750
- Should be OK. Remove the reload rate limit as the change detection handles it already.
- Limit URL length: https://gitlab.com/surfer-project/surfer/-/merge_requests/751
- Should be even more OK.
- Other MRs
- Dinotrace
- Should be OK.
- Unique name computation
- Should be OK.
- Logo/icon
- Merge.
- Preferred time unit setting
- Fine. We can rebase and fix the conflicts.
- Surver/server still experimental?
- No, we should revise the README.
## 17/09/2025
- Handled some MRs
## 03/09/2025
- WCP discussion
- Some changes were proposed in matrix. We'll merge the add_item and add_scope commands to avoid the "what is a scope" question
- We'll remove the python `wcp` library and only keep `wcp_async` to avoid double work
## 04/06/2025
## 07/05/2025
- Automatic build of VS Code extension?
## 23/04/2025
- Demo of upcoming SLang-Surfer integration. Really cool.
## 09/04/2025
- Move WCP to Surfer organization.
- Move Surfer documentation (book) to Surfer main repo.
- [#392](https://gitlab.com/surfer-project/surfer/-/issues/392) Current behaviour is not correct. If the clicked signal is focused/selected, move all focused/selected signals. If other signals are focused/selected, only move the clicked signal.
## 12/03/2025
- Parallel FST
- GTKWave proposed a metadata file to specify where data is.
- External file which says which files are included in the simulation.
- This allows multi-simulator simulation in additon to more efficient fst dumping in verilator.
## 26/02/2025
- Shared config file
- Things like what variables are viewed
- File identification
- .wave.json
- let's make a shared wishlist
- WCP
- TCP failed so our test coverage isn't great
- Not obvious how to fix, we should re-add a few TCP tests to at
- least ensure that different messages work
- Todd proposed some changes, all sound good:
- Tokioify the wcp server.
- WaveformLoaded event on all waveform loads, not just triggered by wcp
## 12/02/2025
## 29/01/2025
Limited attendance.
## 15/01/2025
- Move book (documentation) to main repo? Easier to change in one location... - Yes!
- Add doc-build to main repo CI? - Yes!
- MR Status updates - Merge grouping now.
- WCP command naming
- Should we try to be consistent between command prompt and WCP?
- x_add is intuitive because you can search
- add_x is intuitive for APIs
- Should we couple WCP to Surfer?
- Consensus seems to be now
- Transcript windows
- Serialize commands or a transcript?
- Meeting meta
- Opt-in meetings?
- 20:00 is a bit awkward, 17:00 since we rarely have west coastees here
- Other discussion
- Date of next meeting
## 18/12/2024
No sound from Frans
## 6/11/2024
## 23/10/2024
- Other discussion
- Some discussion about Extensibility. Hudson River Trading are interested in macros in the UI or
similar via plugins. The WCP might do some of what they want, but we should think about this for the python plugin system design
- Date of next meeting
## 09/10/2024
- MR Status updates
- Nothing needs discussing
- Other discussion
- There is a PR open for wellen python API
- Wellen API might change a bit, but surfer changes should be minimal
- Date of next meeting
## 25/09/2024
Attending: @TheZoq2 @oscargus @ekiwi1
- MR Status updates
- Only one new MR
- Get the GTKWave parsing in?
- Other discussion
- @TheZoq2 has received publishing rights for the VS Code extension
- Date of next meeting
## 28/08/2024
- MR Status updates
- Other discussion
- Milestone all (merged) MRs
- Will make it easier to quickly check if something is missing from the change log at release time.
- Menu item ordering
- Especially the file menu seems a bit random to me
- Use separators more?
- The file menu could be more like the view menu
- Settings is very cluttered, perhaps a settings window
- would make sense at this point
- VSCode plugin status
- Frans contacts Fischer to get push rights
- Release process
- Frans does not have the time/energy to do a release post, can someone take over?
- Lucas might do it
- Date of next meeting
- 18/09
## 21/08/2024
No attendance, postponed one week
## 07/08/2024
- MR Status updates
- Other discussion
- Should clicking move the cursor or is dragging the expected behavior? https://gitlab.com/surfer-project/surfer/-/issues/297
- It should move, the change was made on accident. The issue has a note about where to start looking into it
- Clippy errors & compile time warnings
- Add pre-commit check for some obvious ones, like dereferencing and clone.
- Black bar below signal values
- Lucas looks into this
- Date of next meeting
## 24/07/2024
Attending: @TheZoq2 @sornas @oscargus @kacper-uminski
- MR Status updates
- Other discussion
- Package naming for Python translator bindings / others (@sornas / @oscargus)
- Date of next meeting
## 10/07/2024
Attending: @TheZoq2 @lklemmer @sornas @oscargus @TopTortoise @kacper-uminski
### MR
- Remote control
- Pretty much done
- Needs review
- Grouping
- Needs review, Frans maybe
- Drawing
- Lucas will fix the remaining things
### Loadable Translators
Showing off the new python translator, it works!
Spade via wasm also works, but is very slow. Investigate performance. (Could also cache translation results.)
Python translators are running through pyo3. pyo3 should work on web but it is not tested yet.
WASM uses extism.
Next steps: Translator customization UI? Written proposals for larger changes.
### Transaction streams
Protocol for transaction streams. Based on pretty old Surfer code, needs a big rebase / re-do.
Will continue working
### Accessible Themes
Work is progressing on accessible themes. It should be trivial to add
an editable background alpha for signals and clock lines.
## 26/06/2024
Attending: @oscargus, @TheZoq2, @andreasWallner, @FRoith
### MR Status updates
- 395
- new
- 394
- new
- 391
- Mostly for feedback on the backend implementation
- Hierarchical stuff
- We should try to unify the representation of hierarchical things
- 388
- Waiting on workspaces
- load_state opens a dialog, kind of strange
- In the future, add optional_everything thingy to the command prompt
- Unit tests are still a bit hacky :(
- 380
- ready for merge
- 375
- CI failed in merge train
- 319
- Rebased but CI failed
### Instruction decoder
Felix has a tool to generate decoder configs for almost all risc-v instructions. Missing
compressed instructions, once that works we'll have full risc-v suport. Custom toml files are coming, and docs.
We can do HDL decoding using this. That would require some way to map variables to decoders, could do with a single file or 2 stage process
Translators supporting multiple signals would be nice
## 05/06/2024
Attending: @oscargus, @TheZoq2, @lklemmer, @sornas, @andreasWallner, @fischermoseley, @FRoith, @kacper-uminski, @TopTortoise
- Introductions
- Example stuff:
- What is your name?
- Where do you live (roughly)?
- What is your background? What do you work on outside of Surfer?
- What made you get involved with Surfer?
- What current Surfer features are you most excited about?
- What are the most important features missing from Surfer (max. 3)?
- How do you see yourself contributing to Surfer over the next couple of months?
- MR Status updates
- Draft: Add save, rename old save to save as
- command prompt: use show_rows instead of show
- Waiting on author (not present)
- Draft: Add server for remote control interface
- Difficult to test with split client/server (?)
- Drawing and other things
- Out of date, has been rebased but not very cleanly
- Draw overview in canvas
- Blocked on bike-shedding
- Moves the timeline overview so it is below the canvas, not the entire window.
- Leave opinions in the MR
- Draft: Add modifiable key bindings
- Good starting point for further work on key bindings (?)
- Draft: Add multi-selection
- Was approved, needs re-do
- WIP Touchpad-optimized input
- egui does not automatically know the difference between mouse and touchpad
- Frans has ideas but not enough time
- Perhaps investigate querying the system?
- Add tomldoc-generated documentation
- Has weird bugs
- Frans has not enough time
- Draft: Add numeric range and value to translators for plotting
- Old, needs re-thinking
- Close it
- Other discussion
- Stateful translators would be nice, if someone wants to work on it
- Give Frans VSCode extension publishing permisssions
- Date of next meeting
- 2024-06-26, same time (20:00 CET)