After reading Jason's email (quoted below), I think this is an extremely intriguing approach to investigate.
The very first step to this should be a quick (less than 4 hour) mockup in plain vanilla HTML, with a Bootstrap-style boilerplate stylesheet, that shows the guided steps that a user would take. At this point, we don't need pretty graphics or backend. This is just something that we could have some Duncan, Noel, and some folks at HAX try out. We can then compare / contrast that by letting them try the existing GUI. I've setup a wiki page so that we can enter the feedback that we get from the users. I think within the time alloted, it should also be simple enough to setup a Typeform survey, or Google Docs, to more quickly get the feedback from users and plot it into some relevant manner that can be visualized.
Original email, 12:20PM Friday Sept 25 2015:
Hey guys, related to the above I've been spending a lot of time this week thinking about user experience. I've also had a kick in the pants from the launch of GlowForge ( http://glowforge.com/, check it out, it's amazing ) and seeing how they narrowed their product focus down to something very specific. In a way, very limited, but also incredibly good at what it does.
Based on this, I've started to reconsider my position on a web based interface and how complex it would be. When thinking about this previously I was always thinking in the context of porting all of OpenPnP to a web based interface, which would be a huge undertaking. But that's not at all required for a successful Firepick web interface.
One of the biggest parts of OpenPnP and most of the complexity is it's ability to configure for almost any machine. It's super flexible, but for Firepick that is actually a hinderance. We don't want to offer users a million options; we want to give them a single, streamlined experience for doing one thing:
Prototyping a board.
With that in mind, I've been working on an improved workflow that would be much, much simpler for users. It's far less flexible than what you get with OpenPnP in general, but I think that's okay. It looks like this:
You open http://firepick.local in your browser and a basic user interface comes up. It's not much more than a camera view and an upload button.
You click the upload button and select your Eagle .brd file. (More on why Eagle later)
The software loads the board and comes up with a plan for placing it. It looks at which feeders you own, which feeders are attached, which parts were in them during the last job, etc. and determines what the optimal feeder setup will be. It may involve changing feeders a couple times or swapping parts, trays, etc.
It tells you to mount the board and install the first set of feeders that it needs.
You press the Go button on the machine and it starts.
At this point it's pretty hands off:
The machine scans the bus for the feeders and uses vision to make sure they are where they are supposed to be.
It next scans the bed for the board, using fids to find and orient it. Even better if we have a high mounted camera or an adjustable focus camera so we can take a wide angle picture and find it more quickly.
Then pasting starts. We can use some pretty simple vision to improve the pasting process. Basically, look at the pad, paste it, look at it again to make sure something happened. Or just inspect each pad after the paste job finishes.
After paste is done it starts placing. If it needs more parts or more feeders partway through the process it beeps and sends you a text message to your phone.
When placing is done it texts you again. You go over, set the board on the hot plate and hit the Go button again and it lets you know when reflow is finished.
Now, the thing is, this experience would be awesome for people who want to prototype or build one board at a time but it does limit what you can do if you are more of an advanced / power user. I think this where the power of OpenPnP comes in. Everything I've described above would be really easy to do as a UI layer above OpenPnP, just using OpenPnP's guts down below. And if you are a power user you can just skip the pretty interface and go straight to OpenPnP running on a laptop or whatever and get the full suite of flexibility.
That's not to say the nice UI couldn't be expanded over time. It definitely could. For instance, say you want to do multiple copies of the same board. When you start the job you just tell it how many you want and it uses the camera to find them all.
The nice thing about doing something like this is that it leverages everything we've done and learned so far. Carousel feeding, paste dispensing, strip feeding, improved vision, easier setup, automatic offset detection, etc. All of this is framework we'd need to be able to provide this simple, seamless interface.
I do think, though, that if we wanted to do something like this we'd have to really focus on our core user experience and decide if a simplified version is reasonable for a v1 product. Trying to please everyone is going to take a lot more time and work.
So, what do you think?
Jason
P.S. As for the Eagle import, this would be a way to show that you can do this all with a single click. Supporting other CAD software directly is just another importer and we can always offer the fallback option of Centroids + BOM + Gerber, it's just more clicks and a less seamless experience.
After reading Jason's email (quoted below), I think this is an extremely intriguing approach to investigate.
The very first step to this should be a quick (less than 4 hour) mockup in plain vanilla HTML, with a Bootstrap-style boilerplate stylesheet, that shows the guided steps that a user would take. At this point, we don't need pretty graphics or backend. This is just something that we could have some Duncan, Noel, and some folks at HAX try out. We can then compare / contrast that by letting them try the existing GUI. I've setup a wiki page so that we can enter the feedback that we get from the users. I think within the time alloted, it should also be simple enough to setup a Typeform survey, or Google Docs, to more quickly get the feedback from users and plot it into some relevant manner that can be visualized.
Original email, 12:20PM Friday Sept 25 2015:
Hey guys, related to the above I've been spending a lot of time this week thinking about user experience. I've also had a kick in the pants from the launch of GlowForge ( http://glowforge.com/, check it out, it's amazing ) and seeing how they narrowed their product focus down to something very specific. In a way, very limited, but also incredibly good at what it does.
Based on this, I've started to reconsider my position on a web based interface and how complex it would be. When thinking about this previously I was always thinking in the context of porting all of OpenPnP to a web based interface, which would be a huge undertaking. But that's not at all required for a successful Firepick web interface.
One of the biggest parts of OpenPnP and most of the complexity is it's ability to configure for almost any machine. It's super flexible, but for Firepick that is actually a hinderance. We don't want to offer users a million options; we want to give them a single, streamlined experience for doing one thing:
Prototyping a board.
With that in mind, I've been working on an improved workflow that would be much, much simpler for users. It's far less flexible than what you get with OpenPnP in general, but I think that's okay. It looks like this:
At this point it's pretty hands off:
Now, the thing is, this experience would be awesome for people who want to prototype or build one board at a time but it does limit what you can do if you are more of an advanced / power user. I think this where the power of OpenPnP comes in. Everything I've described above would be really easy to do as a UI layer above OpenPnP, just using OpenPnP's guts down below. And if you are a power user you can just skip the pretty interface and go straight to OpenPnP running on a laptop or whatever and get the full suite of flexibility.
That's not to say the nice UI couldn't be expanded over time. It definitely could. For instance, say you want to do multiple copies of the same board. When you start the job you just tell it how many you want and it uses the camera to find them all.
The nice thing about doing something like this is that it leverages everything we've done and learned so far. Carousel feeding, paste dispensing, strip feeding, improved vision, easier setup, automatic offset detection, etc. All of this is framework we'd need to be able to provide this simple, seamless interface.
I do think, though, that if we wanted to do something like this we'd have to really focus on our core user experience and decide if a simplified version is reasonable for a v1 product. Trying to please everyone is going to take a lot more time and work.
So, what do you think?
Jason
P.S. As for the Eagle import, this would be a way to show that you can do this all with a single click. Supporting other CAD software directly is just another importer and we can always offer the fallback option of Centroids + BOM + Gerber, it's just more clicks and a less seamless experience.