-
Notifications
You must be signed in to change notification settings - Fork 24
Conversation
…e CLI implementation with it.
@sio4 One thought I've been having is the following. the CLI is v0 and v0 means (AFAIK) that it's rapidly changing and there are no API guarantees. Which I think is the reason most people want to see Buffalo hit v1. I wonder if we're being too careful with Buffalo CLI and Library when implementing changes, what do you think? |
Yes, I agree that people want to see v1 since they want to use "stable" tools and libraries for their projects. This is the reason I want to mark the current version of the buffalo core library (https://github.com/gobuffalo/buffalo) as For the CLI, I think it was slightly different from the library since it is a tool, not a library which could affect the user's application. It only will affect the development process and pipeline (along with CI/CD) so we should treat them with a separated versioning approach. I think the legacy CLI is also saturated enough as a production tool, so I hope we can make the current version One more consideration for the CLI is that previously the CLI module does not expose any method or something, so the version scheme is relatively free and in fact, the version number does not need to be semantic. However, with your new architecture, the CLI became an importable module to extend the feature so it should have a meaningful version with a semantic scheme.
So my idea/conclusion is that:
What do you think? your approach and mine are different on two points.
If you agree with my direction, I will work on it this week. |
Yes. I think we should do that. |
@sio4 What if we just throw away the old-version of the CLI? Taking into consideration that v0 provides no-guarantees we could just use this PR as the base. Assuming except for the plugins the behavior is the same we should be able to keep going with v1. After all, plugins are an advanced feature of the CLI. Right? |
OK, then I will work on it (the core library versioning) this week. (actually, I am more passionate about the library part :-) |
There are some background ideas of my thought:
So I hope we can keep the legacy version as v1 until the new version v2 comes. If this is a web service, it may not be a concern but the buffalo is a package software.
(I am not fully sure I understand your meaning. Sorry for my bad English) I think it depends. Plugins can be an advanced/additional feature and may not be used frequently except pop. If we just merge the functions of pop or implement it stable, I think we can maybe release the new version even if the plugin support is not fully stable. However, it could be a going back to the early stage of the buffalo without plugins. Not sure how many users use them but buffalo-auth, buffalo-goth are also nice plugins and they help buffalo users a lot. I think the direction of the new version itself is about plugin support. and I guess it will need more time to get ready with a stable version. I hope we keep the trust of the users during the period too. |
Hey @sio4, Thanks for being patient with my reply. Things have been very busy for me. |
Moving to |
This PR changes the approach we've been taking on the CLI aiming to provide the ability to plugin custom commands to the Buffalo CLI, at a higher level this would compact the stack that will be supported by the Buffalo team and allow Buffalo developers to write plugins that solve their workflow specific needs.
In terms of the ability to override the CLI there are 2 main needs:
These two capacities are vital to improving the out-of-the-box experience for Buffalo by allowing developers to provide support for their own tools and let the Buffalo maintainers focus on a better experience for the frontend stack.
Also, Some of the resulting effects of this new shape of the Buffalo CLI are:
In order to achieve those 2 overall goals we should complete the following steps:
cmd/buffalo
)$HOME/.buffalo/cmd
).