ghost-discord / ghost

🤖 A modular, multi-feature Discord bot
GNU General Public License v3.0
23 stars 31 forks source link

GUI wrapper #21

Open LeMikaelF opened 5 years ago

LeMikaelF commented 5 years ago

Note: this is in response to a card in the "to do" category in ghost2's project page that suggests building a GUI.

I also think there should be a GUI wrapper for the less tech-savvy, but I think this wrapper should be developed independently. In keeping with the Unix philosophy, we should

"Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features".

For example, a lot of Unix CLI tools that are somewhat complicated to use have had GUI wrappers built for them, sometimes many different ones. For example,ffmpeg, a video editing CLI tool, has at least seven different GUIs-Graphical-User-Interface-Applications-using-FFmpeg).

As a GUI wrapper will necessarily drag in more dependencies (at least JavaFX, for a Java project) and more complexity (testing with JavaFX isn't always easy), I think a GUI wrapper should live in a completely different repository. This will also:

So on top of proposing that the GUI wrapper be completely independent from this repo, I think its development should also be delayed until the release of 1.0.

zzzowoey commented 5 years ago

You pretty much nailed the idea. Instead of JavaFX, I was thinking of using an ncurses-style TUI library, but it doesn't seem like there are many available for Java. That'll get figured out eventually.

With the "core" commands implemented, we're already at 1.0, so I'll put this on 2.x for now.

weakphish commented 3 years ago

Howdy - re-reading this and was wondering what you'd think of either a Rust or Go TUI library, since Java doesn't really have a good library for it?

Thanks.

zzzowoey commented 3 years ago

Those are both great ideas! I personally prefer Rust as a language, but I think Go is probably more mature.

At a glance, I think Cursive and this gocui fork are among the best choices for either language. Both are actively maintained and produce some pretty clean code -- especially Cursive.

zzzowoey commented 3 years ago

I do want to start working on this project again, so I'll try to start laying out a Cursive frontend this week. Keep in mind, though, that it's not in the plans to make this wrapper part of this repository. You could easily make your own if you want to.

weakphish commented 3 years ago

Cursive looks great and I much prefer Rust. Should we make a repo in the Ghost2 org in order to keep it related but not the same repo?

zzzowoey commented 3 years ago

Yep. It'll be in the same org. I'll link it here when it's available.

weakphish commented 3 years ago

Sounds good. I haven't personally worked on an open-source project from the ground floor so I'm not exactly sure what the procedure is for generating a roadmap, but I'm happy to do whatever you point me to, or come up with designs, etc. Just give me the orders. :-)

zzzowoey commented 3 years ago

Here's the repo. I still need to put some thought into the roadmap, but if you want to throw some ideas/designs into the ring, I'll integrate them.

Also, I'm going to make the call to switch to a webapp, because it's a lot easier to build cross-platform. Windows is really not built for TUI applications. There's a fantastic, 100% native Rust library named Iced that I think is probably going to be the library of choice, but I'll look around a little more this afternoon.

weakphish commented 3 years ago

Looks like I don't have access to the repo. Otherwise, I look forward to getting to work!

zzzowoey commented 3 years ago

Quick update: I haven't been completely dead for the past 4 days! I am very preoccupied with school, though, so we're going to be moving somewhat slow. I've got a really cheap UI mockup in the works that I'll include in the ghost2-wrapper roadmap once I post it. You should be able to see that repository now as well.

For now, the first concrete step in this process is going to be implementing a REST API here to expose to the wrapper. We've already got Spring, so that should be relatively easy. I'll open a separate issue here for it.

weakphish commented 3 years ago

Same re: school, so no worries at all. I'll take a look at the API and see what I can whip up in the limited time I have.