ericclemmons / react-tooling-challenge

Competition to improve the tooling landscape for all React users.
13 stars 0 forks source link

Instructions #1

Open ericclemmons opened 8 years ago

ericclemmons commented 8 years ago

@gaearon pinged me in Dec. 2015 about a tooling challenge with incentives (not listing publicly yet).

I thought it would be best for us to agree on the challenge definition & criteria to be scored against.

First, some history...

Previous Challenge

@vjeux initiated his challenge with these key points:

To which the community responded with (based on what I happened to :star: from the Twitter explosion)

These do a pretty good job of answering @vjeux's original post. There has been a lot of progress, but limited traction in this space. From what I can gather, due to:

If we were to challenge the community for something more impactful (to the majority of React users), although a bit of a departure from @vjeux's original post, it would require reframing the challenge in the vein of something like:

What would need to exist to drastically change the DX for you (@gaearon, @vjeux, @ericclemmons, )?

Next Steps...

So, before writing up anymore, my question is really: is this challenge the same as before, or do we want aim for something that'll affect the community at large?

(My hope is that, whatever the outcome, "Getting Started" can better accommodate the various types of React users.)

vjeux commented 8 years ago

is this challenge the same as before, or do we want aim for something that'll affect the community at large?

My challenge was designed to get people to think about the problem space. Adding artificial constraints is a good way to do that. My intention is to get people to actually solve the bigger problem, not checking all those bullet points :)

ghost commented 8 years ago

I feel like I may be able to contribute in this area. It's probably easiest if I provide some background. Apologies in advance if this is the wrong place to provide my perspective. :)

Back in about 2011, the direction the web was headed became really obvious, to me at least. I had developed a handful of web apps by then and was pretty fed up with the lack of good tooling. A perfect system for web application development was obvious to me and so I began building it on and off in my spare time over the next few years and a couple of different versions after figuring out what works and what doesn't.

The system was originally modeled after the Unreal Engine's actor model and replication system such that everything on the page was a component. You could enable or disable the ability to edit the code (JS and CSS) behind any component by tapping your CTRL key and/or prepending /dev/ to the URL's pathname. The system was designed from the ground up for modern, real-time web apps, and so it made sense for the entire development process to follow that paradigm. You could see your changes take place (hot reload) in real-time, and the development process also took place in real-time with your team or whoever else. Every component was declarative and reactive (this was before React). There were auto-generated RESTful APIs based on each component's properties (this was before GraphQL and Relay). And most user data boiled down to auto-generated logs based on whatever actions performed which were easily queryable and displayed however you wanted using the same components. There's a bit more to it, things like the ability to enter any URL on your domain to create a page, auto-generated routing based on point-and-click nested navigation components, automatic client-side caching for offline use, etc., but I'll stop there.

I could get the original prototype up and running again, but for now, you can check out a thread I made on some forums early last year detailing an app I built with the system: https://forums.unrealtournament.com/showthread.php?14859-Web-App-Design. I think the future is more important though.

Shortly after I built all of that is when React, ES6, Babel, etc. began gaining tons of traction. I was honestly really frustrated at first because of how much time I had put into that prototype only to realize that it had no future. But I eventually came around and began recreating everything using all of the latest and greatest open source tools that more developers are familiar with or will almost certainly be familiar with in the near future. Not all of it is on GitHub yet but most of the pieces of the puzzle are in place now. I spent the past 6 months or so focusing on other unrelated things but I've recently gotten back into it and should have something to show for it all relatively soon.

There is one critical piece of the puzzle that needs to be completed first (hopefully done by the end of this week), which solves a problem that I consider unacceptable to leave unsolved before we can move forward - i.e., we need a fairly standardized method of providing data/actions/etc. to components completely automatically and efficiently. Of course, everyone has their own strong opinions on these things, but once that particular proof-of-concept is finished I think I'll be able to provide a pretty convincing argument.

Moving forward... I'm not sure what else to add to this thread at the moment. It felt like a good place to begin chiming in. I haven't made much of an effort in the past to talk about these things but I'll try to communicate a bit more from here on. Maybe I'll actually start using the twitter account I created in 2011. At the very least, I'll start blogging as soon as the aforementioned critical piece of the puzzle is released, and I won't stop until long after the tooling for web development exceeds my expectations. I'd be glad to help out with anything here or wherever, or if anyone would just like to bounce some questions and ideas around, that works too. :)