-
Notifications
You must be signed in to change notification settings - Fork 0
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
Draft and directions #1
base: master
Are you sure you want to change the base?
Conversation
✨ This looks like a solid base to get going with! One thing that I would like to see (though you might have a good reason for not including this), is a section on creating your own drivers, that covers when, if, and how to create one. I imagine that |
I would love to contribute a chapter on developing games with Cycle.js. I think we need a really solid chapter on testing (which would probably also involve us collectively figuring out how best to test Cycle apps, which really needs doing). |
I agree with @raquelxmoss, a chapter about drivers would make a lot of sense. State management could be written talking about the simplest approach (reducers/actions inside components) going through more radical approaches (like state drivers) and letting the user choose. Maybe I could contribute a little with Cycle.js for 3D/canvas. |
@raquelxmoss, @geovanisouza92 totally agree, I will add a section on chapter 3 about creating your own drivers. Yes, I see the whole index mainly as the direction to follow, evolving as we move further with the writing. In this direction one good way to go will be to review each chapter TOC in detail just before we start writing it so that we define such details as we tackle each section. @Widdershin, @geovanisouza92 that will be totally awesome! |
Seems like a very good start. I'd love to contribute when I've got a little more free time, I'm particularly keen on helping with the routing. |
I got in touch with some Publishers that might be interested in publishing such a book. I haven't made my mind up yet if I should go down this path or not and stick with writing it here within the community instead. So, for the moment , I'm taking some of the inputs publishers are giving me, by doing the initial work they require an author to go through. First of all putting together a detailed outline/proposal document that I'm sharing here below with you. I believe that either way I go, starting from "why" and clearly define "what" is vital for the success of the project. I would love to hear any feedback from you (as well as your thoughts on writing it here vs going with a classic publisher). Many thanks in advance! Title: Cycle.jsBuild reactive Human-Computer Interaction(HCI) applications that are easy to extend, compose and test, with cleaner code and greater separation of concerns AudienceReader’s expected knowledge
Reader’s motivationLearn how to create reactive Human-Computer Interaction(HCI) applications that are easy to extend, compose and test, with cleaner code and greater separation of concerns. MissionAbout the book’s topicThe book focuses on Cycle.js: A functional and reactive JavaScript framework for cleaner code. How Cycle.js works and what makes it different from its alternativesWhile most front-end frameworks focus on Graphical User Interfaces, Cycle.js introduce a message passing architecture to model Human-Computer Interaction(HCI) in a more holistic way, making it suitable to create any kind of Human-Computer Interaction like Web Audio components and network requests components just to name a few. To do so, Cycle.js glue together functional and reactive programming paradigms exposing an architecture for cleaner code and greater separation of concerns. Apps are created as pure functions, making aspects like testing and server-side rendering trivial. Their internals are built around Reactive programming constructs, resulting in greater separation of concerns and cleaner, simplified code related to events, asynchrony, and errors. Because of its fractal architecture, every Cycle.js app, is simply a function that can be reused in any other Cycle.js app. Why is it important now?Observables are here to stay. Netflix is partly built around them. They are used as primitives in various reactive streams libraries (i.e. RxJS) and can be found in various codebases: from Angular2 to Falcor, from Horizon.io to Mobx. An ECMAScript proposal for Observables is now at stage0. Yet, put aside books focusing on the RxJS library, It’s hard to find written material explaining how to build real applications with such constructs. Cycle.js is one of the first fully reactive frameworks to suggest best practices and design patterns around those reactive primitives. Pushing the state of unidirectional data-flow architectures further. Given the rising popularity of functional reactive programming together with the growing of the Cycle.js community this book represent an important missing piece to help developers master the observable type, easily use functional reactive stream libraries, learn design patterns that can be applied to any Human-Computer Interaction application and write cleaner code that is easier to test and reason about. About the bookCore issues/challenges this book is going to addressGetting started with Cycle.js and FRP, in general, can scare away developers. Streams can be scary at a first sight, functional programming concepts might sound new and the reactive paradigm forces us to reason in a new way. Furthermore, picturing how to put all this together in order to write better apps can be a non-trivial task adding up developer’s fatigue. Cycle.js and this book address all of this, plus more by taking the readers through a journey aimed to prove those common misconceptions to be wrong. The journey that this book will take the readers on.
Objective and achievementsAfter reading this book, the reader will be able to:
|
A few of us in the community have been approached by publishers. I took the issue to some of my managers from my last company, and they strongly recommended self publishing. Their argument was that the financial deal provided by most publishers means that unless your book is an outrageous success, you're unlikely to see a reasonable return on your time invested. They also pointed out that publishers bring to the table the ability to access and sell to the market. This is a moot point for Cycle.js, between Gitter and Github we already have access to the potential market. Here a few of my personals pros and cons for self publishing: Pros:
Cons:
Personally, I would rather see the book written in the community and self published. However, I understand that there is a financial component to this. If the book was written in the community and self-published, I have an idea of how to address this: The lead writer/book creator receives a large direct cut, (say ~50%). Some of my friends in Wellington have built a piece of software called Cobudget: https://medium.com/@Cobudget/getting-started-with-collaborative-funding-265dabef30e3#.y601zusw3 It provides a space for people to propose ideas, and then anyone can fund them. The idea is that this would be seeded with a certain proportion of the proceeds of the book. I would prefer this approach to attempting to reimburse contributors directly, as that has a very large set of social challenges. This is just an idea, what do you think? @nickbalestra |
@Widdershin the points you outline are more or less the same ones I'm evaluating. I am boiling them down to the followings: Pros:
Cons:
So far I must say that all my interactions with publishers/editors have been very useful, and I can totally see them bringing great value on the table (not in 💵 ). Perhaps there might be an opportunity for a solution in between (see @getify's "YDKJS"). I'm currently exploring this path to see if it could be a feasible option for this project as well. |
@staltz, @Widdershin, @TylorS, @vic, @geovanisouza92, @FeliciousX, @raquelxmoss :
I've drafted a first early readme. Few things that are perhaps worth discussing:
I guess it will evolve as we move forward with writing this. Would love to have your feedback on this, is there anything you see missing? Will you suggest a different order?