Separate BM core and GUI client #739

Open
opened 2014-11-19 18:19:07 +01:00 by hackergrrl · 20 comments
hackergrrl commented 2014-11-19 18:19:07 +01:00 (Migrated from github.com)

Are there any plans or intention to separate the PyMessage GUI from the core bitmessage node? Tox does this nicely by maintaining tox-core separately from its myriad of clients. Given that the community has already demonstrated an interest[1][2][3] in alternative clients, it would be nice to see the BM core stand on its own. Other pluses include a lighter-weight (and lower dependency) core due to the GUI features not being present, and a bug tracker that provided clean partitioning of BM core issues vs UI issues.

Are there any plans or intention to separate the PyMessage GUI from the core bitmessage node? Tox does this nicely by maintaining [tox-core](https://github.com/irungentoo/toxcore) separately from its myriad of clients. Given that the community has already demonstrated an interest[[1](https://github.com/chovy/bmr)][[2](https://github.com/jclement/bitmessage-web)][[3](https://github.com/noffle/bitomail)] in alternative clients, it would be nice to see the BM core stand on its own. Other pluses include a lighter-weight (and lower dependency) core due to the GUI features not being present, and a bug tracker that provided clean partitioning of BM core issues vs UI issues.
TcM1911 commented 2015-01-15 23:31:32 +01:00 (Migrated from github.com)

I think this would be a great idea.

I think this would be a great idea.
stevedekorte commented 2015-01-15 23:39:03 +01:00 (Migrated from github.com)

I agree. Btw, we've made a Bitmessage framework that can help those writing OSX clients:

https://github.com/Voluntarynet/BitmessageKit

I agree. Btw, we've made a Bitmessage framework that can help those writing OSX clients: https://github.com/Voluntarynet/BitmessageKit
scrobbleme commented 2015-01-31 18:55:44 +01:00 (Migrated from github.com)

+1

+1
bartmika commented 2015-02-13 02:45:59 +01:00 (Migrated from github.com)

+1

+1
goldbook commented 2015-02-16 17:43:58 +01:00 (Migrated from github.com)

+1

+1
TheNain38 commented 2015-10-24 00:58:18 +02:00 (Migrated from github.com)

+1 It would be usefull if other projects wants to use Bitmessage core without having a UI

+1 It would be usefull if other projects wants to use Bitmessage core without having a UI
PeterSurda commented 2015-10-24 01:13:26 +02:00 (Migrated from github.com)

You can run pybitmessage without the GUI and access it through the API. There are two projects that create a bridge to email clients (https://github.com/Arceliar/bmwrapper and https://github.com/AyrA/BitMailServer) and one by me which creates a bridge to email servers, https://github.com/PeterSurda/bitmessage-email-gateway. Then there's an alternative implementation, https://github.com/monetas/bmd with an email bridge too, https://github.com/monetas/bmclient.

So you even have a choice between python, C# and go. It may not do everything you want, maybe an addon for Thunderbird would be nice, but I think that it's outside of the scope of this project so I'm closing the issue. If you want to help, help one of these other projects, or let me know what API calls you're missing. Adding new API calls should be fine.

You can run pybitmessage without the GUI and access it through the API. There are two projects that create a bridge to email clients (https://github.com/Arceliar/bmwrapper and https://github.com/AyrA/BitMailServer) and one by me which creates a bridge to email servers, https://github.com/PeterSurda/bitmessage-email-gateway. Then there's an alternative implementation, https://github.com/monetas/bmd with an email bridge too, https://github.com/monetas/bmclient. So you even have a choice between python, C# and go. It may not do everything you want, maybe an addon for Thunderbird would be nice, but I think that it's outside of the scope of this project so I'm closing the issue. If you want to help, help one of these other projects, or let me know what API calls you're missing. Adding new API calls should be fine.
TheNain38 commented 2015-10-24 01:26:24 +02:00 (Migrated from github.com)

@PeterSurda Is it possible to compile it without GUI? Just to use it through the API?

@PeterSurda Is it possible to compile it without GUI? Just to use it through the API?
TheNain38 commented 2015-10-24 01:28:18 +02:00 (Migrated from github.com)

@PeterSurda Forget what I just say, I didn't seen daemon mode

@PeterSurda Forget what I just say, I didn't seen daemon mode
stevedekorte commented 2015-10-24 01:28:23 +02:00 (Migrated from github.com)

@TheNain38 Yes, we do this for our Bitmessage client (BitPost).

@TheNain38 Yes, we do this for our Bitmessage client (BitPost).
hackergrrl commented 2015-10-24 01:28:47 +02:00 (Migrated from github.com)

There are two types of separation I think are being conflated: library / application separation, and api server / application separation.

Right now, PyBitmessage offers its network API as its own integration point. Contrast this with a library like bitchan/bitmessage, which implements solely the BM core, and delegates other orthogonal concerns (e.g. networking) to other libraries (in this case, bitchain/bitmessage-transports). This opens up brave new worlds of exploratory efforts: I can just swap out a default TCP transport with WebSockets or Bluetooth and reap the benefits! All without needing to do a hard fork on the entire codebase and GUI app.

This kind of effort decouples the components of BitMessage's functionality, giving a variety of integration points to prospective developers wishing to build on BM's technology. This lets the PyBitmessage GUI application live separately from the lower layers of the BM stack.

There are two types of separation I think are being conflated: library / application separation, and api server / application separation. Right now, PyBitmessage offers its network API as its own integration point. Contrast this with a library like [bitchan/bitmessage](https://github.com/bitchan/bitmessage), which implements solely the BM core, and delegates other orthogonal concerns (e.g. networking) to other libraries (in this case, [bitchain/bitmessage-transports](https://github.com/bitchan/bitmessage-transports)). This opens up brave new worlds of exploratory efforts: I can just swap out a default TCP transport with WebSockets or Bluetooth and reap the benefits! All without needing to do a hard fork on the entire codebase and GUI app. This kind of effort decouples the components of BitMessage's functionality, giving a variety of integration points to prospective developers wishing to build on BM's technology. This lets the PyBitmessage GUI application live separately from the lower layers of the BM stack.
stevedekorte commented 2015-10-24 01:32:48 +02:00 (Migrated from github.com)

Bitchan looks like a great project. Is the Bitmessage support working well?

Bitchan looks like a great project. Is the Bitmessage support working well?
mailchuck commented 2015-10-24 01:36:26 +02:00 (Migrated from github.com)

The transport/core separation makes more sense and that is something I may consider for PyBitmessage, but not for the moment. However, GUI separation is a different issue. There isn't that much glue, the core sends some signals to the GUI, GUI sends messages to the PoW thread, and they share a database thread (because sqlite3 does not like multithreading). That's about it.

The transport/core separation makes more sense and that is something I may consider for PyBitmessage, but not for the moment. However, GUI separation is a different issue. There isn't that much glue, the core sends some signals to the GUI, GUI sends messages to the PoW thread, and they share a database thread (because sqlite3 does not like multithreading). That's about it.
TheNain38 commented 2015-10-24 01:38:17 +02:00 (Migrated from github.com)

I was referring to a GUI/core separation

I was referring to a GUI/core separation
bartmika commented 2015-10-24 03:13:16 +02:00 (Migrated from github.com)

This ticket and porting bitmessage to Python version 3.4 are my two wish list items I'd love to see done for future releases.

This ticket and porting bitmessage to Python version 3.4 are my two wish list items I'd love to see done for future releases.
PeterSurda commented 2015-10-24 09:16:47 +02:00 (Migrated from github.com)

Since there appears to be demand, I'll take a look at it, but it won't be anytime soon.

Since there appears to be demand, I'll take a look at it, but it won't be anytime soon.
TheNain38 commented 2015-10-24 10:45:49 +02:00 (Migrated from github.com)

@PeterSurda thank you

@PeterSurda thank you
TheNain38 commented 2015-10-24 13:44:58 +02:00 (Migrated from github.com)

If you port Bitmessage to python 3.4, it would be good to also keep 2.7 compatibility

If you port Bitmessage to python 3.4, it would be good to also keep 2.7 compatibility
bartmika commented 2015-10-24 14:18:25 +02:00 (Migrated from github.com)

@PeterSurda thank you! I love building little apps for PyBitmessage as this technology is fascinating. I've already built https://github.com/bartmika/bitmessage-answeringmachine and I have some other interesting ideas I'd like to build. But the problem is all the development work I do now is only in Python 3.4 and I'd like to have PyBitmessage headless run (without GUI but only core) so I can focus on developing apps with it. That's why these two items are on my wishlist. Thanks for reading and wishing all the best!

@PeterSurda thank you! I love building little apps for PyBitmessage as this technology is fascinating. I've already built https://github.com/bartmika/bitmessage-answeringmachine and I have some other interesting ideas I'd like to build. But the problem is all the development work I do now is only in Python 3.4 and I'd like to have PyBitmessage headless run (without GUI but only core) so I can focus on developing apps with it. That's why these two items are on my wishlist. Thanks for reading and wishing all the best!
TcM1911 commented 2015-10-24 20:44:15 +02:00 (Migrated from github.com)

I think it would be a good idea of separating the GUI and the core into two different repos, having the core live maybe under Bitmessage/libbitmessage or something similar. Doing it this way, the lib can serve as the reference implementation of the protocol.

I think it would be a good idea of separating the GUI and the core into two different repos, having the core live maybe under Bitmessage/libbitmessage or something similar. Doing it this way, the lib can serve as the reference implementation of the protocol.
This repo is archived. You cannot comment on issues.
No Milestone
No project
No Assignees
1 Participants
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Bitmessage/PyBitmessage-2024-12-04#739
No description provided.