Let me introduce Brush, another command line tool for Backdrop CMS.

As a Drupal-centric hosting provider we at AltaGrade are looking forward at some point to actively start migrating our customer Drupal 7 websites to Backdrop. And we really would like to have all the essential developer and system administration tools that will ease otherwise quite tedious and potentially troublesome migration process. That's why lastly we've dived into evaluating Backdrop Console and Drush Integration for Backdrop CMS, found them great and promising tools, each with its own pros and cons.

At the same time, both projects have only limited set of working commands: Backdrop Console, because it is quite fresh and being built from the ground-up; and Drush Integration, because it is about gradually updating each of Drush command initially built for Drupal to make them work on Backdrop, at the same time not allowing rest of the majority commands. We badly needed more commands to work, and had realized that while submitting request issues and contributing some code ourselves help only at certain degree, it would take much longer to reach the desired level of efficiency, especially when it comes to downloading, uploading and syncing the databases across the different environments. 

And that is when we decided to take another stab at getting all the juicy Drush possibilities working on Backdrop sooner without getting in the ways and paces of the developers of the Backdrop Console and Drush Integration projects. And here is the Brush, a completely refactored pre-Symfony, pre-Composer Drupal era Drush, namely version 4.x, fully compatible with and working like a charm on Backdrop. There are just a few commands missing, but most of the Drush commands we usually used to work with Drupal sites are there on Brush running without issues.

This tool has been built mostly for our own purposes and I am not even sure that refactored Drush-version is the right candidate for https://github.com/backdrop-contrib and therefore we've placed it under AltaGrade. However, I believe the more tools we have for Backdrop the better for the community, and if the community accepts Brush, then of course we will move it to Backdrop contribs.

Have a nice time brushing on CLI!

Most helpful answers

This post makes me really sad because I really wish you had collaborated with one (or both) of the existing backdrop command line projects, rather than creating a third. Starting over again does a disservice to everyone who has worked on these tools before. 

Jen, thanks for your opinion, please don't be sad! I do see and fully accept your arguments. Our intention was never either to make you sad or disservice who has worked on two other tools before. 

Were the existing maintainers not interested in having you on as a co-maintainer for either project? If your team had commit access to drush, for example, it would probably have taken you less time than creating something new. Your tool would also have benefited from the input of those with more Backdrop and/or drush experience.

Oh, no, just on the contrary - we find everyone in Backdrop community friendly and very much helpful in guiding new comers like our team members. In fact, you will find mine or Alex' participation in both projects issue tracks. Please stay assured we will follow where the consensus takes the majority of Backdrop community. 

As for why we decided to go ahead with creating another command line tool, we really needed some missing commands in both drush and/or b for our internal automated workflow, which we are preparing to fully embrace Backdrop. When time comes for either of two projects to get mature enough, we will just switch brush commands.

As for time and efforts spending, I probably failed to properly explain how brush was created: our team did not spend much time working on this project, because all we did was to refactor all the occurrences of drupal changing to backdrop, drush to brush, and to replace the download paths. In fact the first working version was done within several hours and we polished it for another day and then rolled out to Github.

Now that you have the tool your team needed so urgently, I hope that you would consider granting them the time they need to contribute this code back to the Backdrop community -- preferably as part of the existing Drush project.

I am sorry I forgot to update this forum page that the project was moved to https://github.com/backdrop-contrib/brush some time ago. I am not sure about will either drush or maintainers be willing to accept the brush code, because all three approaches are fundamentally different: while Drush is trying gradually open up working commands for Backdrop at the same time effectively blocking all non-functional commands for now, and while B is being build up from a clean slate, Brush is simply refactored pre-symphony Drupal era Drush 4.x.

Personally I find B's approach most appealing, but because its's missing quite a few commands, we keep using Brush in our internal workflow. At the same time, we track how Drush is progressing with interest. And we include all three command line tools in our Backdrop development stack on https://github.com/altagrade/backdrop-dev 

Please be assured our team is open for any kind of co-operation, and we will continue to contribute to Backdrop projects, including Drush and B. As I said I am not sure Brush's approach is right one, but it is meeting our automation needs for the present and we've had just shared it with the community.

Please note Drop has been renamed to Brush per https://github.com/backdrop-contrib/brush/issues/4

Wow, @ this progress is amazing.

This post makes me really sad because I really wish you had collaborated with one (or both) of the existing backdrop command line projects, rather than creating a third. Starting over again does a disservice to everyone who has worked on these tools before. 

We badly needed more commands to work, and had realized that while submitting request issues and contributing some code ourselves help only at certain degree, it would take much longer to reach the desired level of efficiency...

Were the existing maintainers not interested in having you on as a co-maintainer for either project? If your team had commit access to drush, for example, it would probably have taken you less time than creating something new. Your tool would also have benefited from the input of those with more Backdrop and/or drush experience.

This tool has been built mostly for our own purposes and I am not even sure that refactored Drush-version is the right candidate for https://github.com/backdrop-contrib and therefore we've placed it under AltaGrade

Now that you have the tool your team needed so urgently, I hope that you would consider granting them the time they need to contribute this code back to the Backdrop community -- preferably as part of the existing Drush project.

Having too many similar projects is one of the problems that plagued the Drupal community, and I would love if if we could avoid that in Backdrop (as much as possible).

Comments

jenlampton's picture

Wow, @ this progress is amazing.

This post makes me really sad because I really wish you had collaborated with one (or both) of the existing backdrop command line projects, rather than creating a third. Starting over again does a disservice to everyone who has worked on these tools before. 

We badly needed more commands to work, and had realized that while submitting request issues and contributing some code ourselves help only at certain degree, it would take much longer to reach the desired level of efficiency...

Were the existing maintainers not interested in having you on as a co-maintainer for either project? If your team had commit access to drush, for example, it would probably have taken you less time than creating something new. Your tool would also have benefited from the input of those with more Backdrop and/or drush experience.

This tool has been built mostly for our own purposes and I am not even sure that refactored Drush-version is the right candidate for https://github.com/backdrop-contrib and therefore we've placed it under AltaGrade

Now that you have the tool your team needed so urgently, I hope that you would consider granting them the time they need to contribute this code back to the Backdrop community -- preferably as part of the existing Drush project.

Having too many similar projects is one of the problems that plagued the Drupal community, and I would love if if we could avoid that in Backdrop (as much as possible).

This post makes me really sad because I really wish you had collaborated with one (or both) of the existing backdrop command line projects, rather than creating a third. Starting over again does a disservice to everyone who has worked on these tools before. 

Jen, thanks for your opinion, please don't be sad! I do see and fully accept your arguments. Our intention was never either to make you sad or disservice who has worked on two other tools before. 

Were the existing maintainers not interested in having you on as a co-maintainer for either project? If your team had commit access to drush, for example, it would probably have taken you less time than creating something new. Your tool would also have benefited from the input of those with more Backdrop and/or drush experience.

Oh, no, just on the contrary - we find everyone in Backdrop community friendly and very much helpful in guiding new comers like our team members. In fact, you will find mine or Alex' participation in both projects issue tracks. Please stay assured we will follow where the consensus takes the majority of Backdrop community. 

As for why we decided to go ahead with creating another command line tool, we really needed some missing commands in both drush and/or b for our internal automated workflow, which we are preparing to fully embrace Backdrop. When time comes for either of two projects to get mature enough, we will just switch brush commands.

As for time and efforts spending, I probably failed to properly explain how brush was created: our team did not spend much time working on this project, because all we did was to refactor all the occurrences of drupal changing to backdrop, drush to brush, and to replace the download paths. In fact the first working version was done within several hours and we polished it for another day and then rolled out to Github.

Now that you have the tool your team needed so urgently, I hope that you would consider granting them the time they need to contribute this code back to the Backdrop community -- preferably as part of the existing Drush project.

I am sorry I forgot to update this forum page that the project was moved to https://github.com/backdrop-contrib/brush some time ago. I am not sure about will either drush or maintainers be willing to accept the brush code, because all three approaches are fundamentally different: while Drush is trying gradually open up working commands for Backdrop at the same time effectively blocking all non-functional commands for now, and while B is being build up from a clean slate, Brush is simply refactored pre-symphony Drupal era Drush 4.x.

Personally I find B's approach most appealing, but because its's missing quite a few commands, we keep using Brush in our internal workflow. At the same time, we track how Drush is progressing with interest. And we include all three command line tools in our Backdrop development stack on https://github.com/altagrade/backdrop-dev 

Please be assured our team is open for any kind of co-operation, and we will continue to contribute to Backdrop projects, including Drush and B. As I said I am not sure Brush's approach is right one, but it is meeting our automation needs for the present and we've had just shared it with the community.

@jenlampton   Sadly, your post makes me sad.  Trying to publicly shame someone, because they didn’t do work the way you wanted it done?  Were you having an exceptionally bad day when you posted that?  AltaGrade did NOT do a disservice to anyone who has worked on those other tools.  They did a service for all of us who are considering Backdrop.  Why?

I’m an almost complete competitor of AltaGrade and even I must say that this statement alone makes all of AltaGrade’s work/time valuable:

Brush, a completely refactored pre-Symfony, pre-Composer Drupal era Drush

It’s nice not having to deal with all that extra “junk” that’s been pushed down our throats in the guise of “helping” us.  Hmmm, isn’t that also one of the major reasons Backdrop was forked from Drupal?

Way to go AltaGrade!

Best regards all,
Michael

PS:  @alanmels  Alan(?), I’m curious why 4.x was chosen in 5.x?  (I use 5.x daily and it doesn’t need Symfony/Composer/etc., not a critique, the 4.x branch worked just fine, so just curious.)

 

Hey Michael,

Thanks for the input, however please note that I am all for creating Backdrop-specific command line tool from zero, so eventually b should mature. Our solution was just a temporary solution that worked perfectly to our use case, especially those commands which are needed for data-base connections (e.g.: pushing files with drush rsync was something we could get working right away with other two tools. brush rsync works). So all - including Jen's initial concerns - are fine, believe me.

As for your question in PS, lot'a of commands on 5.x version didn't work out of the box after refactoring, whereas the most command on 4.x started to work just after refactoring without having to invest more time.

Peace and Be all safe in this crazy period of coronavirus!