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 to stable v1.0.0 #79

Closed
clue opened this issue Mar 19, 2017 · 13 comments
Closed

Roadmap to stable v1.0.0 #79

clue opened this issue Mar 19, 2017 · 13 comments

Comments

@clue
Copy link
Member

clue commented Mar 19, 2017

Let's face it, this project is stable and has been used in production for years :shipit:

However, we're currently following a v0.X.Y release scheme (http://sentimentalversioning.org/).

We should finally make this explicit and fully adhere to SemVer and release a stable v1.0.0.

To a large extend, a stable v1.0.0 helps making BC breaks more explicit and thus the whole project more reliable from a consumer perspective. This project is actively maintained and has received some major updates in the last weeks and has some major updates planned in the next weeks. Given our current versioning scheme, we'd like to ensure all anticipated BC breaks will be merged before the planned v1.0.0 release.

As such, I've set up a roadmap that enlists only the major changes for each version among with planned release dates towards a stable v1.0.0 release:

v0.4.11 ✅

  • Released 2016-09-15
  • Decode chunked transfer encoding

v0.4.x ✅

v0.4.17 ✅

  • Released 2017-03-20
  • Uppercase chunk headers

v0.5.0 ✅

  • Released 2017-05-22
  • Stream semantics
  • Replace SocketClient with Socket
  • Cancellation support
  • No longer considered beta quality

v0.6.0

  • Planned 2019-??
  • Request promise

v0.7.0

  • Planned 2019-??
  • PSR-7 response
  • Reduce public API

v0.8.0

  • Planned 2019-??
  • Merge this component into Http

v1.0.0

  • Planned 2019-??
  • No new changes planned, this should merely mark the previous release as "stable"

This ticket aims to serve as a basic overview and does not contain every single change. Please also see the milestone links and the CHANGELOG for more details.

Obviously, this roadmap is subject to change and I'll try to keep it updated as we progress. In order to avoid cluttering this, please keep discussion in this ticket to a minimum and consider reaching out to us through new tickets or Twitter etc.

@clue clue added this to the v1.0.0 milestone Mar 19, 2017
@clue
Copy link
Member Author

clue commented Mar 19, 2017

Given that there is already ongoing effort to merge this component into the Http component, it's questionable whether this component here will ever be tagged as stable v1.0.0 at all.

See #78 for more details.

I've opened this ticket to give people a realistic overview of how this component is planned to evolve over the course of the next few months and how reliable this component is.

IMHO this component is quite stable already, despite having several major BC breaks planned in the next weeks. As such, (depending on your needs) you're safe to build on top of this component now.

Once we merge this component into the Http component, we'll make sure to provide some upgrade guides on what needs to be changed. Upgrading this should not take more than a few minutes, as existing code will be moved as-is.

@WyriHaximus
Copy link
Member

I've updatedv0.4.17 to be release tomorrow, given @clue has approved #77 , and I didn't see any issues with it and first glace. (Unless @jsor finds something though.)

Also I'de like to do keep alive/persistent connections in v0.6.0. It will most likely require significant internal changes to the way connections are handled. What do you think about that @reactphp/core?

@clue
Copy link
Member Author

clue commented Mar 20, 2017

@WyriHaximus Go for it 👍

I've set up this roadmap to ensure we can get to the v1.0.0 ASAP and only address major BC breaks along the way. If the feature is ready in time, I can see this getting in before v1.0.0 gets tagged. Otherwise, I'm also fine with getting this in as a feature release as v1.x.0 eventually :shipit:

@WyriHaximus
Copy link
Member

@clue yes that absolutely makes sense, which is why I didn't edit it in yet. I want it to have it ready before adding it to 0.6.0, 1.1.0, or even 1.2.0 😄

@WyriHaximus
Copy link
Member

Updated now that v0.4.17 is out

@clue
Copy link
Member Author

clue commented May 22, 2017

Updated now that v0.5.0 is out :shipit:

@WyriHaximus
Copy link
Member

So whats the plan for v0.6.0?

@nenad
Copy link

nenad commented Jul 30, 2019

Any plans on marking the client stable? It's been more than year and a half 🙂

@clue
Copy link
Member Author

clue commented Jul 30, 2019

@nenad See above for our plans as to when we plan to release a stable tag :shipit: As much as we'd like to commit to a specific date, we can can only say that we will get to this as soon as time permits.

If you need this for a commercial project and/or feel like sponsoring/supporting this development, feel free to reach out 👍

@WyriHaximus
Copy link
Member

@nenad Also if you want to help out working with out getting v0.6.0 out the door feel free to reach out as well.

@nenad
Copy link

nenad commented Jul 30, 2019

@clue and @WyriHaximus, I was looking at the roadmap, and for v0.6.0 Request Promises are mentioned. What exactly is missing there, and how could I help?

@WyriHaximus
Copy link
Member

@nenad in short we want to bring https://github.com/clue/reactphp-buzz API to this package. So I think a first step would be to change:

<?php

$loop = React\EventLoop\Factory::create();
$client = new React\HttpClient\Client($loop);

$request = $client->request('GET', 'https://github.com/');
$request->on('response', function ($response) {
    $response->on('data', function ($chunk) {
        echo $chunk;
    });
    $response->on('end', function() {
        echo 'DONE';
    });
});
$request->on('error', function (\Exception $e) {
    echo $e;
});
$request->end();
$loop->run();

Into:

<?php

$loop = React\EventLoop\Factory::create();
$client = new React\HttpClient\Client($loop);

$client->request('GET', 'https://github.com/')->then(function ($response) {
    $response->on('data', function ($chunk) {
        echo $chunk;
    });
    $response->on('end', function() {
        echo 'DONE';
    });
}, function (\Exception $e) {
    echo $e;
});
$request->end();
$loop->run();

@clue
Copy link
Member Author

clue commented Jul 13, 2020

I'm closing this as the new HTTP client that has been merged into react/http via reactphp/http#368 :shipit: You should upgrade as per #152 👍

@clue clue closed this as completed Jul 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants