Comments (17)
I'm focusing more on what makes a release "wow" worthing, and I think as it would stand with the proposed inclusions, it's not very "wow" worthy (without a healthy amount of imagination for future potential). I stand a bit more on the "wait for wow" side of the spectrum @fitzgen alludes to at the beginning of the proposal, but really only when it comes to the question of when to market the crate (e.g., blog posts).
For an actual 0.1 release to crates.io, I'm with @David-OConnor, let's just focus on when the APIs close to completion feel solid enough that we're fairly confident we won't immediately want to introduce breaking changes.
from gloo.
In the interest of shipping ASAP, I propose the following list of crates:
gloo_timers
gloo_console_timer
gloo_events
gloo_file
The only one not implemented is gloo_file
, but the RFC for it was accepted, and it seems fairly self-contained, so I think it's okay to wait for it.
Keep in mind that it's easy to add new APIs in a 0.1.1
release, or a 0.1.2
release, etc.
So there's nothing stopping us from making rapid point releases after the initial release.
from gloo.
In the interest of shipping ASAP, I propose the following list of crates:
[...]
Keep in mind that it's easy to add new APIs in a 0.1.1 release, or a 0.1.2 release, etc.
So there's nothing stopping us from making rapid point releases after the initial release.
That sounds good to me, and the latter point is a good one. Adding new APIs is easy to do, changing existing ones is much harder. As long as we are happy with what we commit to shipping, we should be good for rapid releases that add new stuff.
I'll create a milestone that we can rally around, implement, and publish a 0.1 release.
from gloo.
My only concern is that we don't address DOM manipulation at all (outside of just using raw web_sys calls). I understand that waiting until we have an agreed upon high-level library (e.g., a blessed v-dom implementation like dodrio) might push us back in time too far, but I would expect even the very basic v0.1 to have some way of querying and manipulating the DOM that doesn't require all the type-casting required by web_sys.
I feel similarly about the lack of wrappers around XMLHttpRequest
and fetch
, but this also makes the likelihood of shipping 0.1 anytime soon much lower.
But I also don't see the need for tying the "wow" blog post with the 0.1 release. We could wait until later to really market the crate.
from gloo.
@rylev I agree, I think the "wow" release should be 1.0, not 0.1
from gloo.
@Pauan Maybe debating if 1.0 should be the "wow" release is out of the scope of this issue, but I disagree. 1.0 should a "wow" release, but there is plenty of utility of having "wow" releases (with marketing pushes) before locking down a complete backwards compat guaranteed API. In other words, I think we should decouple the idea of semver releases and "wow" marketing campaigns.
from gloo.
<the role of "wow" in 0.1 initial releases>
Agreed with general sentiment that initial 0.1 releases aren't all about the "wow". It is a nice-to-have IMHO.
I was just trying to lay out the objective trade offs before I introduced my personal opinion on where we should strike a balance on that spectrum ;)
(Also, as a more general question: should we always release the mid-level and high-level APIs at the same time, or do we think it's acceptable to release the mid-level first, at the risk of it being overused?)
I think we should be fine releasing the mid-level APIs without having the high-level API there yet. Additions are semver compartible, and we can deliver incrementally better APIs to users, providing value now, and then deliver even better high-level APIs as soon as they're ready after that.
I'm not going to stop us from hyping up the 0.1 release (or 0.2 or 0.3 or...) but I think we should be rather moderate in the hype until we're sure that everything is rock solid (and if it's rock solid, that's the time to do a 1.0 release!)
Basically, my concern is: we hype up the 0.1 release, people come check it out, then things break (or it's so lacking in features that people don't care), people get disillusioned and then leave, never to return. This isn't hypothetical, that exact situation has happened many times, with other projects.
I think the most important aspect in this scenario is to up front and clearly communicate (in release blog posts or TWiRaWA, etc) that while yes there is a lot of cool stuff in this 0.X and you should be excited about it, we are still early days and things will likely shake up a bit in future releases.
To bring things back to the concrete discussion at hand: does anyone have any suggested additions/removals to the proposed 0.1 blockers?
@rylev mentioned xhr/fetch and dom manipulation. Personally, I don't think we should consider anything that is not in-flight right now (eg dom manipulation) because I'd rather ship sooner. However, we do have an in-flight mid-level XHR design that we could potentially add as a blocker. What do folks think of adding that? If we add that, do we want to remove something else?
from gloo.
Ok, I am going to close this issue, and we can use this milestone to track the 0.1 release: https://github.com/rustwasm/gloo/milestone/1
Thanks for the discussion everyone!
from gloo.
I like it, and propose no changes. It may be tempting to expand this list as more proposals mature, but I'd be happy with (and immediately start using) a release that includes a handful of crates (eg these) that have well-defined uses, and are polished.
from gloo.
Overall this seems reasonable to me.
The more stuff we put in the 0.1 release, the more of a "wow"-factor there is with the amount of things we are shipping
Is 0.1 a "wow" release? My understanding is that 0.1 is basically the lowest possible version, so it's just saying, "hey, this exists, and it's unstable since it's on 0.x, but play around with it!"
Instead, it would be 1.0 that is the first "wow" release, since that actually promises strict semver semantics.
gloo-file
Just an FYI that I haven't had a deep look at it yet. I plan to do a solid review soon, and I may have some concerns.
gloo-events
Do we want to push #43 for the initial release? EventListener
is nice and all, but the casting is pretty ugly, so I think StaticEvent
should be the "go-to" idiomatic API instead.
If we release without StaticEvent
, users will start to use EventListener
, and that will become the dominant way of doing events, even though it's inferior to StaticEvent
.
from gloo.
(Also, as a more general question: should we always release the mid-level and high-level APIs at the same time, or do we think it's acceptable to release the mid-level first, at the risk of it being overused?)
from gloo.
Release each part when it's ready, with a caveat in the readme/docs stating a higher-level API's coming. Also don't care for putting emphasis on a "wow" release of any kind, or considering this when deciding when to make new releases. The main limfac for releases (with new functionality) [should be] making sure the API is something we like and won't want to break soon after.
from gloo.
@rylev My impression from the OP was that @fitzgen was only considering APIs that are close to ready (he excluded a few that are currently being worked on but aren't ready yet).
An API for manipulating the DOM hasn't even been specced out in a design issue, so it's definitely not close to ready.
Also keep in mind that we can easily add APIs in minor releases, and we can make another "wow" release at 0.2.
from gloo.
1.0 should a "wow" release, but there is plenty of utility of having "wow" releases (with marketing pushes) before locking down a complete backwards compat guaranteed API.
Sure, we can do that, I don't think it's a great idea though.
Having a 1.0 "wow" release says, "this is stable, this is carefully designed and well tested, you can use it to do Real Stuff(tm)!"
Having a 0.1 "wow" release says, "woooo, get hyped, this is fresh, new, shiny, awesome... well, until we break things and your app crashes in production"
Backwards compat does make a difference, since people (especially Rust folks) really like stability. It's a lot easier to get excited about APIs when you know that it is a solid foundation that you can build on top of, and not just some new toy that might break 2 weeks later.
It's the whole reason we've pushed so hard to make Wasm work with stable Rust. It's the whole reason there have been multiple initiatives to push crates to a 1.0 release (even though they were on 0.x
for years).
I'm not going to stop us from hyping up the 0.1 release (or 0.2 or 0.3 or...) but I think we should be rather moderate in the hype until we're sure that everything is rock solid (and if it's rock solid, that's the time to do a 1.0 release!)
Basically, my concern is: we hype up the 0.1 release, people come check it out, then things break (or it's so lacking in features that people don't care), people get disillusioned and then leave, never to return. This isn't hypothetical, that exact situation has happened many times, with other projects.
from gloo.
Just try to do the right thing. Who cares what people think?
from gloo.
Just try to do the right thing. Who cares what people think?
What is "the right thing"? There is disagreement on that.
Also, if we didn't care what people thought, we wouldn't bother with a "wow" release at all, since the whole point of a "wow" release is because we want people to be excited about Gloo and use it in their projects (and hopefully contribute to it as well).
With a large number of people using (and contributing to) Gloo, that ensures the continued survival of the project, and also helps to bring in new perspectives, which results in better APIs (and more APIs).
So we very much so care about what people think (which is after all the whole point of marketing, and marketing is necessary for the success of a new ecosystem).
from gloo.
In other words, I think we should decouple the idea of semver releases and "wow" marketing campaigns.
This resonates with my thinking for most marketing and semver discussions. Please keep marketing and semver versions decoupled. A marketing push can be done at any release and can present features and bugfixes from many semver releases.
Hi BTW, I'm very much looking forward to using gloo and perhaps contributing if I find the time :) The goals of gloo seems like what I want as a foundation for building pure Rust single page web applications.
My 0.1 wishlist
Wrappers, hiding all JsValue
types for:
- XmlHttpRequest (#44). Fetch can come later.
- DOM manipulation. Partial API coverage would be fine in 0.1, imho.
My use case doesn't need virtual DOM, just simple direct access, short-term at least.
from gloo.
Related Issues (20)
- gloo-worker: incorrect worker path loading when root url is different HOT 1
- [Draft RFC] Make `gloo_net` more idiomatic
- Patch required to fix confusing docs that still show `from_serde` and `into_serde` examples the wrong way around
- `gloo_net`'s `RequestBuilder` is not public
- Use OnceCell for gloo-history HOT 2
- gloo-histroy Support custom query decoder / encoder HOT 9
- Retries for EventSource HOT 1
- async wasm tests don't seem to actually do anything HOT 2
- [history] BrowserHistory: Loaded wrong state HOT 2
- gloo-net: Allow RequestBuilder.query to accept a struct that implements serde::Serialize as an argument HOT 1
- How to close a WebSocket after calling `.split()` ?
- Cloning gloo-worker bridges does not assign new HandlerIds
- Not working with recent yew-0.21.0 HOT 1
- Blob & ObjecUrl generate invalid dowload link HOT 3
- Allow calling `terminate` on workers
- [history] Inconsitent type between gloo_history and gloo_utils HOT 10
- Remove event in another event HOT 2
- Complete gloo-worker webassembly example running in a browser HOT 2
- Feature request: MissedTickBehavior for gloo_timers::future::IntervalStream
- Documentation - broken method reference
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gloo.