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

RFC: Switch repo to Action (maintained, updated version of Meatier) #176

Open
mattkrick opened this issue Dec 16, 2016 · 9 comments
Open

Comments

@mattkrick
Copy link
Owner

TL;DR do you want a Meatier that is updated at the cost of being slightly more opinionated?

Since I published Meatier, I got hired to basically build it into a legit marketable product. That product is open source & found here: https://github.com/ParabolInc/action/.

I don't have the time to backport all changes to Meatier, so what I'm proposing is replacing the current Meatier with Action as it currently is.

Pros:

  • Up-to-date packages!
  • CSS in JS!
  • Popular example patterns like user presence, deploying to S3, DB migrations, react-driven emails, etc.
  • You can still use it as a boilerplate-- just nuke server/graphql/models and universal/modules and you're set to make your own app!

Cons:

  • Uses Auth0 (it's free to small apps) instead of a completely custom GraphQL auth solution
  • ???

@devel-pa @wmertens you guys put in a LOT of hard work in your PRs to update Meatier & I feel like crap not having the time to fully test them out.

@wmertens
Copy link
Contributor

wmertens commented Dec 16, 2016 via email

@mattkrick
Copy link
Owner Author

@wmertens nice! anything with an external message queue? I really wanna take the graphql from apollo with the simplicity of deepstream & the CRDT nature of swarm & mash it into something with amq or redis, but just don't have the business need yet....

@jordanh
Copy link
Contributor

jordanh commented Dec 16, 2016

@mattkrick not yet, but SOON ;)

@KnowledgeGarden
Copy link

Just curious: Meatier is licensed MIT; what happens when you switch to the action codebase in terms of license?

@jordanh
Copy link
Contributor

jordanh commented Jan 3, 2017

@KnowledgeGarden: that's a good question! There is a difference between licenses: Action is licensed under the GNU AFFERO GENERAL PUBLIC LICENSE, Version 3.0. We did this to dissuade would-be competitors from making changes to our application without returning them to the public. Open-source SaaS is somewhat virgin territory. That said, we're interested in licensing our application this way, not the framework behind it.

Our company, parabol.co, reserves the right to relicense the source base. So, if there were community momentum around extracting the application framework (as @mattkrick said, by nuking server/graphql/model and universal/modules, etc.) and, say, perhaps implementing TODO MVC or the original Metier app, we'd be supportive of licensing it under something like the MIT, Apache, or similar.

What do you think of the GPL? Too restrictive? Too difficult to isolate your own code? Or, ok?

@KnowledgeGarden
Copy link

KnowledgeGarden commented Jan 3, 2017 via email

@theobat
Copy link

theobat commented Jan 11, 2017

@mattkrick, @wmertens JUst asked a bunch of things on the gitter a few weeks ago essentially my questions were:

  • What is the file structure logic behind having universal/component and container in the root folder vs universal/modules/*/component and containers ? What's for what ? I feel like modules are page-like part of the app and component, containers are generic kind of things but that feels a bit unclear.
  • What drove to the conclusion of dropping immutable (in action but @wmertens seemed to agree) ? is that only because https://github.com/mattkrick/cashay is not using it (and seemingly does not need it since state diffs are automated sort of) ? I feel when you need a hand written duck like when you need your own custom graphql auth module (like in meatier) it does a good job at preventing you from accidentally modifying the state and I don't see any drawback...
  • Also is there any potential for a PR for query batching in cashay or is this completely out of scope for the tool ? And on the same note, is cashay really worth the trouble if not using @LiVe a lot ? (still struggling to understand the use of @cache)

Thanks ! (learning more than coding for the past few months, still having trouble to see if cashay is required on my end)

@mattkrick
Copy link
Owner Author

@theobat good questions!

file structure: the idea is that reusable components are stored in universal/components. Module-specific components/containers are stored in universal/modules. containers are smart, components are dumb (If react is a MVVM then components = view, containers = viewmodel).

immutablejs is fine, but not every 3rd party reducer can be stuck inside an immutable Map. Since it's kinda pointless sticking a JS object inside of an immutable object, then might as well make the whole thing JS. i also don't like the currently accepted toJS() pattern where you convert the immutable to a js object in mapStateToProps. You could write a memoizing wrapper, but i like removing complexity, not adding it.

it'd be super if someone wanted to take on query batching for cashay! Unfortunately it's not needed for our scrappy little startup right now so I just haven't prioritized it yet.

@mattkrick
Copy link
Owner Author

The path forward:
AGPLv3 allows me (or any member of Parabol) to fork Action and relicense it as MIT, so I'll fork it, chop out the Action-specific stuff, and then replace Meatier with Action. Then we'll have a standard boilerplate without a bunch of Action-specific modules. For folks that don't know how to do somethings (like subscriptions, server-backed DnD, etc) they could still use Action as a reference, but then they can fork Meatier to get started on their own project & be in the clear wrt licensing.
Bitrot is still a risk, but at least it'll get Meatier to a place where we use CSS in JS instead of CSS modules, update redux-form, etc. Since Meatier will be a subset of Action, git merges should also be a less painful (but not pain free) way to back propagate changes that would affect both repos.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants