About the Waystation App
Before we dive in, a little context about our app. The Waystation App supports internal business teams at Wayfair during trade-shows, in which they get to meet dozens of partners and potential partners a day to discuss strategy and business goals. Our users needed to have the technology that will help them be as sharp as possible in each meeting. Starting to work on a solution, we were competing with the most reliable system in known history – pen and paper! We also needed to support an offline mode for the app so that it could function in less-than-ideal internet conditions, which is a common issue at trade show venues. One of the most important features was to take meeting notes. To meet this need, we needed to have a really solid and stable UI component that will allow that functionality.
In order to achieve this, as we couldn’t find an existing Android library that matched our needs, we decided to build a library that would support us. What we arrived at is a really reliable UI component. We are proud of our work and we decided to share it with the community. We knew that the community would help us, too. Bug catching, contributions from companies working on similar problems, and much more was in store by open-sourcing our library.
About Panel Layout – a UI library for Android
Panel Layout is a UI library for Android that allows you to display a floating and resizable panel that can also snap to the edges. This allows our users to have all the necessary space for taking notes and looking at their important content at the same time.
A panel can be presented in the following ways:
- Floating (drag the panel around)
- Snapped (left, top, right or bottom)
Panel Layout makes use of ConstraintLayout to layout the panel with the rest of the content. The library does all the heavy lifting for dragging panels, pinning them, and even moving/resizing them. To learn more about how to use it check our Panel Layout GitHub page.
This library was inspired by a great iOS UI framework: PanelKit
Linus’s Law a.k.a. “Many Eyes Make All Bugs Shallow”
When we write closed source software, the only developers that can potentially detect and resolve software bugs are those that happen to be in our team. Open-sourcing our work provides several advantages:
- Opportunity to get the knowledge of the community’s best developers, not just those on one organization’s payroll.
- Potential contributors, and thus the potential knowledge base, is much larger.
- Software gets adapted to a diverse number of use cases, not just the one our team originally needed, encountering bugs and edge cases faster than usual.
Modern Software – Fresh out of the oven
Open source is a power multiplier for our team. When communities gather around shared challenges, the variety of ideas that naturally appear surface better solutions than if the pool of ideas was limited to just our organization. Exposing the problem scope to other interested developers provides additional people-power to tackle our challenge.
In very simple words:
- Notice something shaky? File an issue.
- Wish the application did XYZ? File an issue.
Issues are the great power of open-source software development and we are hoping for a lot of them to be submitted.
Thanks to being distributed and unrestricted by policy or technical debt, open-source projects are naturally using modern workflows. This means:
- The process is naturally recorded and public
- Lock-free. Contributors can rapidly experiment without the need to seek permission.
We hope all of this will make our software modern and innovative. We’re certainly looking forward to your feedback and contributions. Check out our GitHub repository here: www.github.com/wayfair-incubator/panel-layout