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

BREAKING: BitBar Reboot #607

Closed
matryer opened this issue Feb 5, 2021 · 18 comments
Closed

BREAKING: BitBar Reboot #607

matryer opened this issue Feb 5, 2021 · 18 comments
Assignees

Comments

@matryer
Copy link
Owner

matryer commented Feb 5, 2021

reboot

The objective-C (objc) codebase for BitBar (as well as the evolution of the os and Xcode underneath it) have created myriad issues that make maintaining, bug-fixing, and adding features very difficult.

Thanks to some great work around the community, there are a few projects that continue to give BitBar hope. Given my 11+ years experience in Go, I have decided to push forward with a reboot, written in Go.

The goals of the reboot are:

  • A complete rewrite from the ground up
  • Backwards compatible so all existing BitBar plugins work
  • Modern language (Go, not objc)
  • Quality tests (this will improve maintenance and allow us to bug fix and add features with confidence)
  • A brand new name 🤭

We will also launch it with some new features that were troublesome to get right in the objc codebase. Including, but maybe not limited to:

  • Streaming plugins (long-running executables)
  • Managed preferences (to avoid having to edit the code to customise the plugins)
  • A better user experience

The project is underway and I expect to be able to share more in March/April 2021. At that point, I think I'll make a new main branch in this repo (to keep the stars and credit for past contributors) and switch to the fresh codebase that way.

I want to send thanks to everybody who has contributed, and apologies to those who submitted PRs to BitBar that haven't been accepted. Your work and ideas are still helpful for the rewrite, and you'll get the credit for that.

@matryer matryer self-assigned this Feb 5, 2021
@johnoscott
Copy link

OMG that is such awesome news ! Can't wait for BitBar to rise again !

@matryer matryer changed the title Announcement: BitBar Reboot BREAKING: BitBar Reboot Feb 7, 2021
@maxwellainatchi
Copy link

@matryer I just caught up on the proposed SwiftBar/BitBar merge, and I was wondering what the final resolution on that is. Considering this issue, it seems like you're going with the "keep the two versions separate" path, where they'll eventually evolve into distinct projects (since there are different features planned for each).

Can you confirm if you have plans to work with SwiftBar at all? Or are you officially cleanly breaking? Seems like @melonamin was caught as much by surprise by this as the rest of us.

Regardless, happy to see you back on this project!

@matryer
Copy link
Owner Author

matryer commented Feb 8, 2021

Thanks @maxwellainatchi - I found somebody working on Go tech that mirrored BitBar's capabilities, and they'd unlocked a few key challenges which enabled a rewrite in my favourite language. For years I've been unable to contribute in a meaningful way as the Objective-C knowledge slowly left my body. It wasn't an easy decision, but my attempt to blend the two projects received a somewhat frosty reception from some, and it's not my style to try and force people to do things they don't want to do. Not to mention, I wouldn't be able to easily contribute in Swift.

The Go rewrite is well underway now, scheduled for beta release next month and so far, I'm genuinely excited by it.

@maxwellainatchi
Copy link

Gotcha, glad to hear it. Thanks for the quick response! I hope this doesn't mean you're going to cut off SwiftBar's access to the plugin repo though, for those who do end up using SwiftBar instead.

@matryer
Copy link
Owner Author

matryer commented Feb 9, 2021

Of course not.

@kadirmalak
Copy link

That's good news! By the way, will you build a C lib using Go and call it from Objective-C/Swift? Or is there another way of writing MacOS apps using Go?

@StevenACoffman
Copy link

I'm actually super curious if you are using the https://github.com/progrium/macdriver wrapping technique or something else. Looking forward to whatever you get time to do!

@matryer
Copy link
Owner Author

matryer commented Feb 17, 2021

@StevenACoffman we're not using macdriver but a very similar technique. That is a cool project though. I'll share more details about it when it's firmed up in a few weeks. Thanks for your interest.

@AlekSi
Copy link

AlekSi commented Mar 3, 2021

Will it have some API to push updates? Or "API" like https://github.com/tonsky/AnyBar?

@matryer
Copy link
Owner Author

matryer commented Mar 4, 2021

Hey @AlekSi, the executables are periodically run, so it's more like a poll. But you can save some state somewhere (in a file) in one process, and read it in your plugin to achieve the same effect.

However, the reboot will enable more features, so if this is something there is appetite for things like this, we can look at it once it is launched.

@lakemike
Copy link

lakemike commented Mar 5, 2021

Will it have some API to push updates? Or "API" like https://github.com/tonsky/AnyBar?

Would this not work already using the refresh feature?
https://github.com/matryer/bitbar/blob/master/Docs/URLScheme.md

@matryer
Copy link
Owner Author

matryer commented Mar 5, 2021 via email

@matryer matryer closed this as completed Mar 8, 2021
@chrismetcalf
Copy link

Is there a guide somewhere on how to upgrade from BitBar? I just discovered this reboot, and want to upgrade, but I want to know first about any "gotchas" there may be around upgrading the community and custom scripts I rely on.

@matryer
Copy link
Owner Author

matryer commented Mar 10, 2021

Hey @chrismetcalf - thanks for your question.

xbar is still in beta, and isn't quite ready for production. But if you're feeling adventurous, you can run xbar alongside BitBar, and report back any problems you encounter. xbar is designed to be backwards-compatible with BitBar plugins, so there's no work to do there, unless you want to make use of new features like Variables (more info in the root readme).

To get xbar BETA:

  1. Download the latest release of xbar
  2. Copy your BitBar plugins to the new location ~/Library/Application Support/xbar/plugins
  3. Run xbar instead of (or as well as) BitBar

@chrismetcalf
Copy link

Got it, thanks @matryer! That probably explains why its missing from Brew Cask as well.

@Ecco
Copy link

Ecco commented Mar 16, 2021

It's a bit off topic, but I was astonished by the toxicity of some of the comments on the proposed merge with SwiftBar! Both authors were super chill about the entire thing. But some people - who aren't even contributors to either project! - had so much negative energy…

I'm using neither BitBar nor SwiftBar, and this is the first time I've ever heard of either. I simply stumbled upon this discussion today by pure chance.

I'm writhing this message because I just wanted to send kudos to you @matryer for keeping such a positive and polite attitude through this discussion! Thanks for making the web a better place! And ignore the toxic comments: I'm sure the vast majority of your users, even though silent, really appreciate what you do for them! 😄

@mn113
Copy link

mn113 commented Apr 10, 2021

Hi, since not everybody can install Xbar right away and many are still using BitBar, please could you post information on the READMEs of xbar and xbar-plugins about the backwards compatibility of plugins.

I can't find the old repo to download BitBar plugins for my BitBar, so I need to know if Xbar plugins (was the repo literally renamed?) are sure to work.

I only found this thread after some digging.

Backwards compatible so all existing BitBar plugins work

@kawtharrr
Copy link

Seems odd not to have given @swiftbar a heads-up you were doing this - especially after first raising the proposal to merge the two

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