Skip to content
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

Roadmap (0.4 and beyond) #1147

Closed
12 of 14 tasks
gbj opened this issue Jun 5, 2023 · 9 comments
Closed
12 of 14 tasks

Roadmap (0.4 and beyond) #1147

gbj opened this issue Jun 5, 2023 · 9 comments
Labels

Comments

@gbj
Copy link
Collaborator

gbj commented Jun 5, 2023

(This supersedes the roadmap in #501.)

Roadmap

Goals for 0.4.0

Goals for 0.5.0

Non-breaking improvements

Goals for Future

  • Exploring partial hydration/server components/islands architectures that would allow us to reduce the amount of WASM shipped to the client and increase the ergonomics of loading server-only async data
  • Send/Sync reactive system to improve ergonomics (and possibly performance) of Axum integration (Make reactive system Send/Sync #832)

Ongoing work with no breaking changes

@gbj gbj mentioned this issue Jun 5, 2023
22 tasks
@gbj gbj pinned this issue Jun 5, 2023
@gbj gbj added the future label Jun 5, 2023
@martinfrances107
Copy link
Contributor

martinfrances107 commented Jun 14, 2023

I have to say I really like this project, and this issue is well structured, I like the delineation of breaking changes.

I just want to introduce a sideways perspective -- "Reasons to walk away from 0.3"

So here is a consumer's story

When I follow the template step and produce a new project from leptos version "0.3" and check the project into a github repository employing dependabot

I get security warnings Ouroboros is Unsound

Here is my analysis or the situation

when I ask

cargo why ouroboros

I see "leptos_reative" is the only thing pulling in ouroboros

Also this issue was resolved a few says ago with this PR

Replace ouroboros with self_cell

I appreciate managing the pace of releases is not straight forward

To argue against my point -- Some consumers will be put off by the frequent publication of releases with breaking changes, seeing that incorrectly as sign of instability.

So I am just adding a single factor into a complex decision

At some point we must get off 0.3


output of cargo why

photo_indexer -> leptos -> leptos_dom -> leptos_reactive -> ouroboros
photo_indexer -> leptos -> leptos_reactive -> ouroboros
photo_indexer -> leptos -> leptos_server -> leptos_reactive -> ouroboros
photo_indexer -> leptos_meta -> leptos -> leptos_dom -> leptos_reactive -> ouroboros
photo_indexer -> leptos_meta -> leptos -> leptos_reactive -> ouroboros
photo_indexer -> leptos_meta -> leptos -> leptos_server -> leptos_reactive -> ouroboros
photo_indexer -> leptos_router -> leptos -> leptos_dom -> leptos_reactive -> ouroboros
photo_indexer -> leptos_router -> leptos -> leptos_reactive -> ouroboros
photo_indexer -> leptos_router -> leptos -> leptos_server -> leptos_reactive -> ouroboros

@gbj
Copy link
Collaborator Author

gbj commented Jun 14, 2023

I have to say I really like this project, and this issue is well structured, I like the delineation of breaking changes.

Thanks! And thank you for all your contributions keeping things clean.

So here is a consumer's story

When I follow the template step and produce a new project from leptos version "0.3" and check the project into a github repository employing dependabot

I get security warnings Ouroboros is Unsound

...

Also this issue was resolved a few says ago with this PR

Replace ouroboros with self_cell

To me, the solution here seems pretty straightforward -- I am just going to create a branch that rewinds to the commit that released v0.3.0, apply the single commit that replaced ouroboros with self_cell, run the test suite against it, and release as v0.3.1. That way, anyone who is using main is safe (because the problem has been fixed on main) and also gets the various new features of the last month; and anyone on 0.3.0 can use 0.3.1 without pulling in any of the breaking changes.

I appreciate managing the pace of releases is not straight forward

To argue against my point -- Some consumers will be put off by the frequent publication of releases with breaking changes, seeing that incorrectly as sign of instability.

My perspective on this broader question is pretty straightforward: there are some breaking changes that are unforeseen, and some that are planned. For example, implementing extract for Axum ended up requiring changing some other, public-but-rarely-used functions, a breaking change. On the other hand, things like reorganizing features and changing reactive ownership are things I know are coming, but sometimes move slowly because I do all of this in my spare time.

I'm not bothered at all by the perception of instability due to version numbers; but I do think it's useful to group breaking changes together in releases so that people can sit down and migrate all at once.

Given the fairly rapid rate of releases (0.1 was only in late December/January, after all!) I'm pretty comfortable leaving some new features sitting on main for a while to avoid releasing 0.4, 0.5, and 0.6 in June, July, and August, and requiring a slow trickle of rewrites. Of course many users will simply track main and gradually rewrite anyway, and that's great!

For security things like the ouroboros situation I think an ad hoc extra patch release makes sense.

@nomorechokedboy
Copy link
Contributor

  • Adding end-to-end testing for examples as part of our CI (

I saw that some of the examples still doesn't have the end-to-end testing, can I write e2e test for them?

@gbj
Copy link
Collaborator Author

gbj commented Jun 25, 2023

  • Adding end-to-end testing for examples as part of our CI (

I saw that some of the examples still doesn't have the end-to-end testing, can I write e2e test for them?

That would be really, really great.

@agilarity
Copy link
Contributor

agilarity commented Jun 25, 2023

  • Adding end-to-end testing for examples as part of our CI (

I saw that some of the examples still doesn't have the end-to-end testing, can I write e2e test for them?

That would be really, really great.

I am adding e2e tests for the counters_stable example. The PR will include more cargo make tasks to support trunk and playwright. See PR #1235

@dezren39
Copy link

dezren39 commented Aug 4, 2023

Exploring partial hydration/server components/islands architectures that would allow us to reduce the amount of WASM shipped to the client and increase the ergonomics of loading server-only async data

this would be very cool. +1 for anything along this theme, especially isolated islands.

@gbj
Copy link
Collaborator Author

gbj commented Aug 4, 2023

this would be very cool. +1 for anything along this theme, especially isolated islands.

@dezren39 This is very much a WIP demo but you can see the fruits of #1422 at https://leptos-hackernews-islands.fly.dev/

(This does not work on Safari or iOS at the moment; I didn't realize Safari doesn't have requestIdleCallback.)

@nyabinary
Copy link

Some HTMX-like features would be very cool tbh

@gbj
Copy link
Collaborator Author

gbj commented Sep 23, 2023

Some HTMX-like features would be very cool tbh

Which HTMX-like features are you looking for, how have you tried to use Leptos to achieve the same things, and what's gone wrong?

@gbj gbj mentioned this issue Oct 2, 2023
10 tasks
@gbj gbj closed this as completed Oct 2, 2023
@gbj gbj unpinned this issue Oct 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

6 participants