An update on Sonar v2


#1

At the most recent WISPAmerica show, we organized a customer appreciation event on a Cincinatti riverboat that was a great success! If you weren’t able to make it, you can check out some photographs on our Facebook page.

One of the events we organized on the boat was a preview of Sonar v2, and I wanted to share a little of it with you if you couldn’t make it.

A large part of what we’ve focused on with Sonar v2 is not just improving on our software, but improving on the company. We’ve grown to over 25 employees over the last 4 years, and we now have over 450 ISPs around the world that use Sonar every day. Our goal has always been to build a platform that helps ISPs succeed, whether they are startups or the dominant player in their area and version 2 of Sonar is about creating a software platform and an organization that can make good on that goal.

On the software side, our goals for v2 are to create a new platform that can scale to much larger heights - not just in terms of performance, but in terms of flexibility in the UI as well. We have a whole new API (that I’ll get to shortly) that helps enable this, but the UI/UX comes first. We’ve had a team of 4 people working on nothing but the UI/UX design over the last 6 months - twice as many people as we had building the entirety of v1 when we started! I’m extremely proud of our new interface - I think it looks great aesthetically, but we’ve also spent a ton of time refining and testing it with real world experience to make sure it’s comfortable and intuitive for everyone.

New UI

Below you can see our new scheduling interface. This brings sorting, ordering, searching, and more to the initial view, as well as the ability to group technicians into teams for easier grouping and filtering by department.

The network site list below shows our new sidebar concept in action. We started on this in Sonar v1 with ‘QuickView’ - we now have the ability to open data on any element in a sidebar while viewing a table, so that you can get more information on an item without having to load a new page. We’re also working on implementing a new KPI concept along the top of this page.

An example of where we’ve designed an interface to be more precise for technical users is when viewing monitoring data. Below you can see some test data in our new monitoring layout - we’ve tried to bring a lot of precision while making lots of related information available in the same place. In this case, our KPIs are presented on the side with some quick historical data on changes.

There are a lot of pages in Sonar v1 where the main entry point or dashboard is not hugely useful. We’re trying to solve this in v2 by making the entry point to each module contain a lot of useful information. Here’s a view of the entry into our new IPAM module which shows you a lot of information about both usage and availability.

Finally, a shot of the new inventory module is below. One of the things to notice here is that we’ve implemented a generalized search field on all tables that searches all available data. In v1, tables would often filter inconsistently. In v2, if you can see it, you can search it. This means in the v2 inventory module, you can search by model, manufacturer, MAC, serial, assignee name, physical address - anything that can be found in the main or expanded table.

New API

We have a whole new API in Sonar v2, which is powered by GraphQL. This is a huge advance over v1, where our public and private APIs were separate - in v2, the entire application is powered by the same API that is exposed to you.

GraphQL as a concept is a huge change over classic REST APIs (like the API we have in Sonar v1.) Rather than describing data by endpoints (e.g. accounts/1/addresses giving all addresses for account ID 1) it describes data by a graph of relationships, and lets you tell the API exactly what data you want to get.

Let’s look at a classic request in our v1 API as an example. Let’s say, for example, we want to get all accounts, all their addresses, and all their payments. First, we’d have to get all the accounts:

GET /api/v1/accounts

Now we paginate through each bulk list of accounts to get their IDs. Now we can get each accounts address:

GET /api/v1/accounts/1/addresses
GET /api/v1/accounts/2/addresses
GET /api/v1/accounts/3/addresses
etc…

Finally, we do the same for payments.

GET /api/v1/accounts/1/payments
GET /api/v1/accounts/2/payments
GET /api/v1/accounts/3/payments
etc…

As you can imagine, getting all the data about hundreds of thousands of accounts is a nightmare, both for the consumer, and for our servers! As soon as you start adding any kind of filtering requirements, it’s even worse - most REST APIs don’t allow much filtering beyond the ID, so if you wanted all payments made by a VISA card in the last 90 days that was over $50, you’re in trouble.

Our GraphQL API allows you to filter, shape the data you receive back, and apply complex searching. Below is an example of a query that would allow you to receive a subset of data from the API:

{
    accounts(name: "Simon") {
        id
        name
        addresses(type: MAILING) {
            line1
            city
        }
        payments(type: CREDIT CARD) {
            created_at
            amount
        }
    }
}

This query would give you all accounts where the name is Simon, and those accounts addresses where the type is MAILING, and all payments on those accounts where the type is CREDIT CARD. You can go much further than this with our new API though, as we support full text search on every text field, relation searching (so I can grab all accounts that have at least one credit card payment, for example), aggregations like SUM, COUNT, MIN, or MAX, searching on non-text fields (booleans, numerics, etc), general search across all text fields (e.g. find me all accounts that have the phrase Foobar anywhere in any of their text fields) and more.

New features

A large part of building v2 has been devoted to creating the new foundation that will allow us to quickly build new, scalable features in the future. However, you will see some new features out of the gate on day 1 that are listed below. Our goal is to get v2 in your hands as quickly as possible, so that we can begin rolling out new features on top of this new platform. Day 1, you’ll see:

  • Completely new UI
  • GraphQL API
  • Fully granular permissions
  • Persistent physical addresses
  • Significant queueing and performance improvements
  • A variety of new billing/financial options
  • Significant logging and real time interface improvements
  • Built in guided help throughout the entire application
  • Transfer and disconnection tracking

The persistent physical address change allows you to define serviceable addresses, either ahead of time or at account creation time. Accounts can then be moved from address to address, so that you can maintain a history of each client at each address, along with associating inventory item to the address directly so that CPE or other equipment can be preinstalled or left behind after a disconnect.

The queueing/provisioning improvements are huge - we’ve been able to improve our MikroTik rewrites from roughly 100 commands per minute to roughly 10,000 commands per minute (on a hAP lite!) As time goes on, you’ll see more specifics on these new features as well - stay tuned.

Roadmap

This will be fleshed out further as we get closer to release, but in no particular order, our priority roadmap items post v2.0.0 are:

  • Timeclock
  • Quoting
  • Sales CRM features
  • Pulse improvements
  • Automated report generator
  • Custom dashboards
  • Native SMS/phone module
  • Installer mobile app

Once v2.0.0 is complete and we’ve made it through these features, we’ll spend some time getting our feature request system cleaned up and working through the most highly requested features there as well.

When’s it out??

Our goal is the end of Q2/early Q3 this year. We’ll begin bringing in a few people as beta testers, and then do a controlled roll out. I’ll get more specific soon!

Hope this information has whet your appetite for more to come. Stay tuned!


#2

This looks awesome. I know we are really looking forward to this. Thanks for everything. Had a great time on the cruise!


#3

Just curious, is the plan to keep the /api/v1/ call ability so we can carefully migrate our integrations, or will /api/v1/ just go away with v2.0?


#4

WE CANNOT WAIT !!! LOOKS AMAZING !!! ( yes I am screaming in excitement lol)


#5

We have built a wrapper around /api/v1 so that it translates the requests to the GraphQL API. The only /api/v1 endpoint that will go away is the search endpoint, as the new data models don’t translate at all to what was there previously.


#6

Awesome!


#7

I am excited to see this. The network page looks amazing!


#8

Can’t wait for the GraphQL API! :slight_smile:

What does Native SMS/phone module mean?


#9

Better integrated two way communication with customers via SMS/phone.


#10

any more updates on this. as we are now solidly in the 2nd quarter.


#11

Target is still the end of Q2 - we’ll keep you in the loop as things progress!


#12

What time frame is your quarters on?


#13

Not sure what you mean, but Q1 would be Jan - Mar, Q2 would be Apr - Jun, Q3 would be Jul - Sept, Q4 would be Oct - Dec.


#14

That’s exactly what I was asking :slight_smile: I have found a few companies that has Q1 starting in June for some reason. Thanks.


#15

We’re getting closer to the start of beta for v2 - stay tuned, we’ll have a questionnaire going out that will help us collect info on the features you’re currently using so that we know at which stage we can bring each of you in.


#16

Looking forward to progress!


#17

Is there any update on this.


#18

Things are still progressing as mentioned above - we’ve started the roll out into a production environment, and we’re slowly bringing customers in to beta that are using the features we have finished. Still aiming for a full release in Q3 for everyone. We already have a list of beta customers we’re working with, but we’ll get the questionnaire out if we need more!


#19

Do you have a and updates on the full feature set that will be in 2.0. in regards to Quoting system, Stabilizing and adding to the network monitoring. etc. While the new look is impressive and we are excited to see it. We are more excited about the feature set that will come with 2.0 as most of the features we have been a part of in discussions are (in theory) suppose to be released in this Exciting and Highly anticipated release.


#20

Not yet, but we’ll be talking about it more once 2.0 is available!