ironman5366 / W.I.L.L

A python written personal assistant
https://willbeddow.com
MIT License
378 stars 58 forks source link

What is the goal of WILL? What's the purpose? #37

Closed brenttaylor closed 7 years ago

brenttaylor commented 7 years ago

First and foremost, this isn't criticism. This is an attempt at an open conversation as to what we're actually trying to achieve so we're all working toward the same vision/goals.

I'm sitting here sort of looking at the history of WILL, what's been done and what features exist and what not. It's very fragmented with several restarts and that almost always is due to not enough thought, upfront, as to what the end goal is. What are we trying to achieve?

A lot of time has been spent on parsing, be it the original naive parsing or the NLP that has been worked on in the dev branch, but we haven't actually added any real useful features to WILL. I think this stems from not having any clearly defined goals. Those end goals will shape our initial infrastructure, and while I'm not happy about it, I expect after we've figured this all out we'll need another rewrite.

So, what are we trying to achieve? Yes, we're working on a virtual assistant, but what do we want this assistant to actually do? How do we want WILL to augment our lives?

So here's the big questions I think:

  1. What exactly do we want WILL to do? Keep track of appointments? Track packages? Our To-do list? IoT stuff?
  2. What is our interface for this? Built into the desktop like Cortana? iOS/Android support? Strictly via a chat app? As a web page?
ironman5366 commented 7 years ago

Hi! Thanks for taking an interest in W.I.L.L. I've never really had a central goal for W.I.L.L, it's grown and adapted as I learned more about programming. For the intended features, I really just want to add whatevers useful at the time. I really like the reminders plugin, I'd like to extend that alot. As for the interface, I really like the telegram interface I've kind of stumbled across for a few key reasons

brenttaylor commented 7 years ago

I think maybe it's time you (we?) sit down and come up with an end goal for WILL. That end goal dramatically changes the initial infrastructure.

Reminders are great, but as it is that is something we can add on top of something like cron in about a tenth of the code. It's definitely something I'd want in a virtual assistant, but it's definitely not the only thing.

Things I'd like to see (off the top of my head) in a virtual assistant:

As for the interface, I think we've taken the wrong approach. I honestly think WILL, the core system, should just be a JSON API on top of Flask or (my preference) Django. Actual user facing interfaces can connect to it (including a Telegram bot). This gives us maximum flexibility. As a web app (and there's zero reason this couldn't be personally hosted) it gives us maximum platform support out of the gate. We can add more interfaces on top of the JSON API as time goes on (such as a native iOS/Android app, desktop clients, etc.)

These are just my thoughts of course. And I'm not going to pretend like this isn't an enormous amount of work. Full disclosure, but I can't be a full time dev on the project. I can only contribute when I have time. I just want to make sure you don't go changing your project around completely just because some idiot says, "Hey, wouldn't this be cool!?" :) If this sounds at all interesting, I'm down.

There's a lot of stuff a system like this can do that'd be useful. Now, I admit, I'm on Windows. Some of this I already get out of Cortana. To a certain extent it makes more sense for me to just start extending Cortana (which can totally be done), but I'd like to see where you want to go with the project before I start investing in anything.

ironman5366 commented 7 years ago

This does all sound interesting for me. Throughout the development history of W.I.L.L, I keep getting conflicted about it being it's own thing, vs extending a separate service (If I was to do something like this, I'd rather do it with skills on top of amazon echo). At the end of the day, I think it kind of betrays the whole purpose of W.I.L.L to do it as an extension of an existing service. For me, at least, W.I.L.L has a purpose that's threefold. It should be open source, useful, and most importantly, usable. By this I mean that it should be free for people to expand, it should provide actual things that I want to use on a daily basis (as opposed to just using it for the sake of using it), and less technologically adept users should be able to, with a fair amount of ease, use it. The first of these is accomplished, all my work is on the git repo. The third of these I'm working on, and that's what I was angling for with telegram (but this would totally work on top of a json API) Which leaves us with useful. Honestly, I've just been adding as I go, but your feature list sounds very attractive. I can probably port the framework to django pretty easily, and we can start working! New year, new W.I.L.L!

brenttaylor commented 7 years ago

New year, new W.I.L.L!

Good attitude.

So, as project maintainer, you should give us a basic road map for say the next year.

My suggestion would be to pick four or five user facing features for us to implement over the next year. Features that should be very polished. This is in addition to the back end.

So, my votes for those five features:

  1. The web app interface.
  2. The Telegram interface (after all, you use it!)
  3. Reminders
  4. Todo's
  5. Notes

None of this is terribly hard on it's own (with possibly the exception of reminders as we'll need a way of pushing data to clients rather than simply being polled), but it still represents a rather considerable amount of work and should give us a fairly good idea of the sort of infrastructure we need.

We should probably have a talk about code quality at some point as well. There's a lot of cruft in the code base that's really easily fixed, you just need to know about it. :) On that note, do you have a Discord/Slack/Telegram server or something? Would make communication a lot easier.

Also, considering this is a fairly new project, is there any real reason we're not using Python 3? There's definitely some speed benefits, plus asyncio, type annotations, etc. I'm not saying we have to use Python 3, just that I think it'd be a good idea.

ironman5366 commented 7 years ago

I just created a telegram chat for discussing W.I.L.L development, link is telegram.me/willdevelopment I can take care of most of that, I'd be happy for help on the web app (I'm not the best at css!), but I can get started on porting to django as early as today.

As for python 3, the only real reason I use python 2 is because I'm comfortable with the environment and features. I could use python 3, but nothings really tempted me too much to it, are the speed benefits really that considerable?

brenttaylor commented 7 years ago

Unfortunately it looks like I'll have to join that group in a few days. My phone quit on me a few days ago and I just placed an order for a new one last night. I wasn't aware Telegram actually required a phone to use. :) My replacement should be shipping sometime this week so I'll hop on once it arrives.

ironman5366 commented 7 years ago

Sounds good, I'll see you there in a few days!

On Sun, Jan 1, 2017 at 9:15 PM, Ryan Brent Taylor notifications@github.com wrote:

Unfortunately it looks like I'll have to join that group in a few days. My phone quit on me a few days ago and I just placed an order for a new one last night. I wasn't aware Telegram actually required a phone to use. :) My replacement should be shipping sometime this week so I'll hop on once it arrives.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ironman5366/W.I.L.L/issues/37#issuecomment-269929835, or mute the thread https://github.com/notifications/unsubscribe-auth/AJ2Qi35HqUa6DaoLtmoTMzm2FIQPmHMIks5rOF29gaJpZM4LYgKy .