jbrew / pt-voicebox

predictive text interface
MIT License
286 stars 68 forks source link

Command-line editor is interwoven with pt generator state #15

Closed vtbassmatt closed 7 years ago

vtbassmatt commented 8 years ago

This is a cool project :) It's big enough to do something interesting but small enough that I can wrap my head around most of it.

As it stands, Voicebox is both the editor UI and predictive text generator. I'd like to separate them so that perhaps additional frontends could be developed. Also, this should help with testability.

Opening an issue to discuss, since it would be a somewhat radical refactoring of Voicebox. @jbrew do you have any opposition to me attempting this split? I'm thinking I'll turn Voicebox into the owner of generator state and add a new editor module.

jbrew commented 7 years ago

Update on (1): I think it was coincidental that the issues arose just now. That error seems to have been the script's inability to handle an empty input, not anything to do with your changes.

On Sat, Oct 22, 2016 at 11:52 AM, Jamie Brew brew.jamie@gmail.com wrote:

Hi Matt. Thanks for taking an interest in this! I'm fairly new to github and am not a highly experienced coder, so you might have to be patient with me on things like testing, and conventions in general. I'm learning slowly.

A few things:

  1. I've received a couple of troubleshooting messages in the last couple days about an error that's cropping up in the user loop. Here's one such open issue https://github.com/jbrew/pt-voicebox/issues/16. Since this is the first time that error has shown up, I'm assuming that this is related to the modernization tweaks you made, and wondered if you had any insight into what might have happened.
  2. Re: splitting the generation and UI into different classes, I think that idea makes sense. Before you do that, though, I think you should check out this repo, called stereotype https://github.com/jbrew/stereotype, where I've been developing a tkinter interface for the program. I think it still has the same "interweaving" that you described, I think the one-touch GUI is more representative of how this thing is eventually going to work.

There are some important differences in the architecture in stereotype. Instead of voices, there are channels. Each channel contains just one corpus, and has an adjustable weight. If someone wanted to achieve the same effect that the voices in this version achieve, they'd be able to do that by saving a collection of weight settings, rather than creating an object that contains several corpora.

  1. I'd also like to ask your advice about the current repo arrangement. I'm keeping a separate repo for the GUI for two reasons: (1) It's out of the way and not highly publicized, which lets me tinker with it without the stress of troubleshooting requests. (2) I'm hoping to develop a version of the GUI commercially, so wanted to keep the open source voicebox repo available for people to play with, while developing the Apache-licensed version on the side. Is any of this contradictory? Should I just bite the bullet and sign up for a private repo if I want to do any such private development?

Let me know your thoughts on any of this, and thanks again for reaching out!

On Thu, Oct 20, 2016 at 6:19 PM, Matt Cooper notifications@github.com wrote:

This is a cool project :) It's big enough to do something interesting but small enough that I can wrap my head around most of it.

As it stands, Voicebox is both the editor UI and predictive text generator. I'd like to separate them so that perhaps additional frontends could be developed. Also, this should help with testability.

Opening an issue to discuss, since it would be a somewhat radical refactoring of Voicebox. @jbrew https://github.com/jbrew do you have any opposition to me attempting this split? I'm thinking I'll turn Voicebox into the owner of generator state and add a new editor module.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/jbrew/pt-voicebox/issues/15, or mute the thread https://github.com/notifications/unsubscribe-auth/APtUnkGu3wZI7cYNtyWY4-uErNTOql49ks5q1_bvgaJpZM4KctMa .

jbrew commented 7 years ago

Hi Matt. Thanks for taking an interest in this! I'm fairly new to github and am not a highly experienced coder, so you might have to be patient with me on things like testing, and conventions in general. I'm learning slowly.

A few things:

  1. I've received a couple of troubleshooting messages in the last couple days about an error that's cropping up in the user loop. Here's one such open issue https://github.com/jbrew/pt-voicebox/issues/16. Since this is the first time that error has shown up, I'm assuming that this is related to the modernization tweaks you made, and wondered if you had any insight into what might have happened.
  2. Re: splitting the generation and UI into different classes, I think that idea makes sense. Before you do that, though, I think you should check out this repo, called stereotype https://github.com/jbrew/stereotype, where I've been developing a tkinter interface for the program. I think it still has the same "interweaving" that you described, I think the one-touch GUI is more representative of how this thing is eventually going to work.

There are some important differences in the architecture in stereotype. Instead of voices, there are channels. Each channel contains just one corpus, and has an adjustable weight. If someone wanted to achieve the same effect that the voices in this version achieve, they'd be able to do that by saving a collection of weight settings, rather than creating an object that contains several corpora.

  1. I'd also like to ask your advice about the current repo arrangement. I'm keeping a separate repo for the GUI for two reasons: (1) It's out of the way and not highly publicized, which lets me tinker with it without the stress of troubleshooting requests. (2) I'm hoping to develop a version of the GUI commercially, so wanted to keep the open source voicebox repo available for people to play with, while developing the Apache-licensed version on the side. Is any of this contradictory? Should I just bite the bullet and sign up for a private repo if I want to do any such private development?

Let me know your thoughts on any of this, and thanks again for reaching out!

On Thu, Oct 20, 2016 at 6:19 PM, Matt Cooper notifications@github.com wrote:

This is a cool project :) It's big enough to do something interesting but small enough that I can wrap my head around most of it.

As it stands, Voicebox is both the editor UI and predictive text generator. I'd like to separate them so that perhaps additional frontends could be developed. Also, this should help with testability.

Opening an issue to discuss, since it would be a somewhat radical refactoring of Voicebox. @jbrew https://github.com/jbrew do you have any opposition to me attempting this split? I'm thinking I'll turn Voicebox into the owner of generator state and add a new editor module.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/jbrew/pt-voicebox/issues/15, or mute the thread https://github.com/notifications/unsubscribe-auth/APtUnkGu3wZI7cYNtyWY4-uErNTOql49ks5q1_bvgaJpZM4KctMa .

vtbassmatt commented 7 years ago

Hey, sorry it's taken me a while to get back to you. Day job + 2 year old = sporadic time to work on hobby projects :)

Sounds like the first issue is solved. If you need me to look into it again, I'd be happy to. I saw lots of places where a bit of bad input would make things go sideways. No slam on your coding at all - bulletproofing costs real time that most small projects simply can't afford. That's exactly the reason I want to help pick these two concerns apart. Hardening a separated editor will be a lot easier, and the separation will make the core logic easier to test.

I haven't looked at the other repo yet, but I will before I make any more code changes. Separate projects in separate repos is generally a good idea. It has a cost if one of them depends on the other, but there are strategies which can mitigate that, too.

Whether you need a private repo or not is kind of up to your business model: if the availability of source code hinders your ability to sell it, then you'd want it in a private repo. (GitLab, Bitbucket, and Microsoft Team Services all offer free private repos. Disclaimer/disclosure: My day job is program manager on Team Services, specifically on version control, so read into that any bias you want.)

vtbassmatt commented 7 years ago

This has been sitting open in my browser for almost 3 weeks now as I try to find time to work on it. It's not looking good, though. Maybe in December =/

vtbassmatt commented 7 years ago

Now it's June, and I'm pretty clearly not coming back to this work. If anyone wants to pick it up, good luck!