Skip to content

Move Sobek entirely out of the business logic #4219

Open
@inancgumus

Description

@inancgumus

What?

Move Sobek entirely out of the business logic.

Why?

  • Prevent Sobek data races.
  • Better type-safety using native Go constructs.
  • Developer productivity increase.
  • Separation of concerns.
  • Moving Sobek handling to the mapping layer will make the code easy to reason about, reduce the business logic's Sobek dependency, and simplify the business logic code and tests.
  • Having Sobek in the business logic requires constant encoding and decoding.

Desobekifying Sobek transformation

Besides moving the calling of Sobek option parsing in the business logic, we also plan to move the Sobek-dependent option parsing part out of the business logic. Once we finish doing the same with the rest of the option parsing, we can entirely remove the Sobek dependency from the business logic.

We currently parse Sobek values into our business logic types, but the parsing dependency is in an unrelated package (common). To enhance maintainability, we move the parsing process and keep related components together (in the mapping layer). Additionally, we could implement a Validate method for the business types (in the common package) to check their validity separately from the Sobek transformation.

Moreover, we use pointers quite liberally, which is not good in terms of reduced performance and also because of many nil-pointer panics. Also, since our module is highly current, it's dangerous to have so many pointers around. So, another goal would be to get rid of as many pointer-ed options as possible to boost stability even more.

See grafana/xk6-browser#1510 for an example.

Tasks

Tasks

Preview Give feedback
  1. area: browser triage
  2. area: browser triage
  3. area: browser triage
  4. area: browser triage
  5. 0 of 2
    area: browser refactor triage
  6. 12 of 13
    mapping stability
    inancgumus
  7. 2 of 2
    maintenance
    inancgumus
  8. 2 of 2
    refactor stability
    inancgumus
  9. area: browser triage
  10. 2 of 2
    mapping stability
    inancgumus
  11. 2 of 2
    maintenance stability
    ankur22
  12. 2 of 2
    refactor stability
    ankur22
  13. 2 of 2
    refactor stability
    ankur22
  14. refactor stability
    ankur22
  15. refactor stability
    ankur22

Related PR(s)/Issue(s)

#4458

Metadata

Metadata

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions