Meltano Sprint Review & Demo Day 2020-01-17

We are proud to build in public, and every Friday we get together as a team to go over our priorities, learnings, and metrics and we also walk through what got done and demo the most visible improvements to Meltano.

Sprint Review

This week’s sprint includes:

  • Created a dashboard for paid advertising campaigns with Google Data Studio (will eventually replicate in Meltano, this is a great example of what users want)
  • We now have a Facebook Ads data extractor!
  • We now have a CTA linking users to the public demo instance of Meltano
  • Annotated the extractor setup modal with embedded docs to help users quickly know where to get things like their account IDs, etc.
  • New tutorials for Stripe and Zendesk configuration
  • Updated Getting Started workflow removing SQLite
  • Back button now works, instead of kicking you to the homepage
  • We are now tracking last logged in timestamp for Meltano instances, so we can know if instances are active and reach out to people to re-engage them
  • Users can now drag-and-drop re-order reports within a dashboard
  • Onboarding UI is simplified to be less focus on a pipeline and more focus on connecting data sources and configuring them
  • “Analyze” is now called “Reports” to make it more clear what is behind that link

Metrics Review

Last year, our single KPI to focus on was MAUI and our goal was to reach 1,000 MAUI by the end of 2019. Unfortunately, we missed that goal and we’ve reset our 10% week-over-week growth target based on the first week of January. So far, this is how we’re doing:

Building Meltano in Public: December 2019 in Review

In October 2019, we released Meltano 1.0 and delivered an end-to-end experience for self-hosted users. Following the launch, adoption numbers and user feedback confirmed what we suspected, it was still too hard for most users to get started — and it became clear we were unlikely to hit our 1,000 MAUI goal for the year. In November 2019, we clarified our target persona to focus on startup founders and released Meltano as a free hosted product.

December 2019 in Review

December was all about figuring out how to set up a large number of Meltano instance, get users onboarded, and gathering feedback during discovery calls. Since the launch of our hosted offering on November 26, 2019 we have created 169 hosted Meltano instances.

With the barrier of installation out of the way, we were able to observe users trying Meltano firsthand and came away with a clear set of priorities for improving their experience. The most common user stories coming up during our discovery and onboarding calls are:

  • Reduce friction in connecting data sources
  • Add key data sources requested by Meltano users
  • Provide configuration-free default dashboards
  • Offer the ability to join data across multiple sources into a single report

Right now, these challenges are the main barriers to deeper Meltano adoption and the team is hard at work to resolve them so we can discover the next points of friction. It’s turtles all the way down.

1,000 MAUI By EOY 2019

Our goal was to grow “MAUI” (monthly active UI users) by 10% week-over-week from where it was when I joined the team on Feb. 25, 2019 (15 users). The number was arbitrary, but we needed to start somewhere, and this metric is a great one for assessing product/market fit.

The fact that we missed the goal is disappointing, but that’s not actually the point of the metric. The point is that we tried a lot of things, and found it much more difficult to achieve than expected. The real value is in figuring out the answer to “why is this so hard?” through iteration.

And so we placed new bets on what might be the best way to move the needle, while at the same time respecting some constraints like a very strong aversion to offering a hosted SaaS solution. Ultimately, after trying many other approaches, we had to capitulate and try what we had been avoiding and offer Meltano as a service where we handle hosting and installation.

We saw a 30% increase in MAUI in a single week with this launch, but were initially constrained by infrastructure challenges since we were hand-cranking instance creation. It felt good to have real “startup problems” driven by demand, and now we have the instance creation process streamlined.

Resetting the MAUI Goal for 2020

As we got further and further away from the MAUI pace goal it began to lose meaning, since it felt impossible to catch up. It’s important to have quantifiable goals to iterate toward, but at the same time they should be achievable if challenging. In 2019 this metric did exactly what it needed to do, raising a constant red flag about product/market fit. Despite driving lots of organic traffic and consistently having thousands of new visitors to our website each month, product adoption just wasn’t happening.

For 2020 we have reset the MAUI goal to baseline on our MAUI for the first week of January and then grow 10% week-over-week thereafter. Ideally we will reach 1,000 MAUI in mid-May or earlier, and this should be a true indicator of reaching some early product/market fit:

Retention: The #1 Driver of MAUI Growth

In addition to MAUI, there is a second KPI we will be tracking and reporting on in these monthly recaps going forward: retention. Ultimately, we need to be offering a product that people want to come back and use again and again. MAUI doesn’t mean much if its all new user adoption and no return users, that’s what we call a “leaky bucket”.

Focusing on retention in our product decisions will enable us to make improvements that we can regularly communicate to our users, and having a less leaky bucket will help us justify larger investment in top-of-funnel marketing efforts.


What Shipped in December 2019

Contributions & Cadence

Thank you to all our contributors, both inside GitLab and across the broader open source community for Meltano. Learn more about how you can get involved by reading our Contributor Guide and join the discussion in the public Meltano Slack community.

MRs Merged by Month

Consolidated CHANGELOG

New

  • marketing#103 Add Google Site Verification token to site
  • #1346 Add new tutorial for using FileZilla with a Meltano project
  • #1292 Add guide for setting up Meltano projects on meltanodata.com
  • #1343 Add current Meltano version to main navigation
  • #1361 Add kind: hidden to discovery.yml so certain connector settings can validate with a default value but remain hidden from the user for improved UX
  • #1351 Add “Create Meltano Account” promo for meltano.meltanodata.com
  • #1055 Add “Disable” button to Tracking Acknowledgment toast so user’s can opt-out from the UI
  • #1408 Add “Last Run” context to each pipeline
  • #1408 Add “Started At”, “Ended At”, and “Elapsed” to Job Log modal
  • #1390 Display of extractors and loaders can now be configured through the hidden property in discovery.yml
  • #1374 Add role revocation for users and roles in the meltano permissions command
  • #1377 Document cleanup steps after MeltanoData testing
  • #1438 Add documentation for DNS spoofing error
  • #1436 Add video walkthrough on how to setup Google Analytics so that the Meltano Extractor can be able to access the Google APIs and the Google Analytics data.
  • #1437 Users can now share their dashboards with an automatically generated email
  • #1269 Add kind: file so single file uploads can be used with extractors (tap-google-analytics‘s key_file_location is the first user)
  • #1494 Add LIKE options to Analyze Filter UI so users better understand what filtering patterns are available
  • #1461 Display toasted notification for report adding to dashboard
  • #1419 Add ability to edit and delete dashboards
  • #1411 Add download log button to Job Log Modal

Changes

  • #1341 Various discovery.yml and connector configuration UI updates to improve UX.
  • #1341 Updated documentation to communicate the various optional settings of a connector
  • #1358 Update MeltanoData guide with maintenance and debugging instructions
  • #1337 Add CTA to installations for free hosted dashboards
  • #1365 Add process for deleting meltanodata instances
  • #1340 Update connector settings UI to communicate the required status of each setting
  • #1357 Update LogModal Analyze CTAs so Analyze can preselect the correct loader for a given analysis
  • #1373 Update MeltanoData deletion process with 1Password
  • #1373 Update Analyze dropdown as scrollable to better display model CTAs (scrollable dropdown vs. scrolling entire page)
  • #1371 Provide more specific instructions for Google Analytics configuration
  • #1381 Update the default directory for client_secrets.json for the Google Analytics Extractor to be located under the extract/ directory and not the project’s root.
  • #1345 Update the documentation for the Salesforce Extractor to contain additional information on Security Tokens
  • #1383 Add CTA for hosted solution signup to navigation
  • #1389 Temporary Profiles feature removal (conditionally removed if 2+ profiles not already created so existing users can continue using multiple profiles if created)
  • #1373 Update MeltanoData deletion process with 1Password
  • #1398 Update default Transform from “Skip” to “Run”
  • #1406 Update Analyze Query section CSS for improved UX (visually improved organization and scanability)
  • #1417 Update SCSS variable usage in components for SSOT styling
  • #1408 Updated date and time displays to be human-friendly (moment.js)
  • #1268 Remove Transform step from UI (Create Schedule still allows choosing “Skip” or “Only” but will intelligently default to “Skip” or “Run”)
  • #1435 Change “Model” to “Analyze” so the Pipeline CTA is actionable and less abstract
  • #1432 Changed “Close” to “Back” in Log Modal to help mitigate “Am I ending the pipeline?” concerns
  • #1350 Switch to all lower case for Snowflake permission comparisons in the meltano permissions command
  • #1449 Hide the Marketo Extractor form Meltano UI
  • #1397 Optimize workflow for MeltanoData setup
  • #1423 Update sidebar and docs to include Ansible
  • #1403 Remove “Orchestrate”, “Model”, and “Notebook” from the main navigation until each respective UI is more useful (the /orchestrate and /model routes still exist)
  • #1476 Add database and warehouse revocations for roles in the meltano permissions command
  • #1473 Update Release issue template to recent guidelines
  • #1422 Update start date field to have a recommendation
  • #1431 Add “pipeline will still run if modal is closed” message in the Job Log Modal
  • #1399 Log Modal now has a prompt to explain potential factors in required time for pipelines to complete
  • #1464 Remove the “only” option for transforms in Create Pipeline form
  • #1466 Filters now have clear language and indiciation that they use AND for chaining
  • #1399 Log Modal now has a prompt to explain potential factors in required time for pipelines to complete
  • #1433 Remove /orchestrate route and thus the Airflow iframe as this is overkill for our current target users
  • #1311 Remove unused meltano/meltano/runner docker image
  • #1502 Update configuration file uploads to occur on save vs. file picker completion

Fixes

  • #1334 Fix automatic population of airflow.cfg after installation
  • #1344 Fix an ELT automatic discovery error when running Meltano on Python3.6
  • #1355 Upgrade version of discovery.yml so that not upgraded Meltano instances with a pre v1.9.0 Meltano version do not break.
  • #1364 Fix instructions to SSH into MeltanoData.com instance
  • #1373 Fix formatting on custom containers in MeltanoData guide
  • #1379 Fix an issue with Airflow scheduling too many jobs.
  • #1386 Fix connector modal clipping issue where small browser heights prevented accessing the “Save” area
  • #1401 Fix double instance of self hosted CTA on desktop sites
  • #1439 Fix relative elapsed time since last run time display in the Pipelines UI
  • #1441 Fix auto advance to “Create Pipeline” when coming from “Load” step (previously “Transform” step, but this has been removed from the UI)
  • #1440 Allow installed plugins to appear in UI even if hidden in configuration
  • #1447 Various fixes around loading and reloading reports to mitigate false positive sqlErrorMessage conditions
  • #1443 Fix tooltip clipping in modals
  • #1500 Fix meltano install not running the migrations.
  • #1434 Fix Analyze CTAs to only enable if at least one related pipeline has succeeded
  • #1447 Various fixes around loading and reloading reports to mitigate false positive sqlErrorMessage conditions
  • #1509 Allow plugin profile config to be set through meltano.yml
  • #1518 Fix bug that caused all text fields to show up as required in configuration modals
  • #1446 Fix bug that could result in a broken report when the report URL was manually modified
  • #1411 Fix bug when reading too large a job log file

As Meltano progresses in maturity, functionality and features and the team continues to grow we are publishing more MRs, updates, and videos than ever before. Starting this month, we will recap our progress here and through the Meltano newsletter.

Meltano v1.15.1 is Now Available

Meltano v1.15.1 lays the groundwork for our addition of a Facebook Ads Extractor. The team continues to work hard on launching a useful set of default options for reporting on Facebook Ads data. This release also includes numerous fixes and clarifications.

New

Changes

  • #1527 Update the dashboard modal header to properly differentiate between “Create” and “Edit”
  • #1456 404 Error page now has better back functionality and ability to file new issues directly from the page

Fixes

  • #1538 Fix timeframes not properly displaying on the base table
  • #1574 Fix an issue with Meltano crashing after a successful login
  • #1568 Restore support for custom plugins that don’t have their available settings defined in discovery.yml

Meltano v1.15.0 is Now Available

New

  • #1483 Add login audit columns to track last login time
  • #1480 Add tests to meltano permissions command for Snowflake

Changes

  • #1480 Add schema revocations for roles in the meltano permissions command
  • #1458 Remove tap-carbon-intensity-sqlite model from default installation
  • #1458 Update docs to reflect new getting started path and updated screenshots
  • #1513 Remove dead code related to /model route that we no longer link to in favor of the contextual Analyze CTAs and the MainNav.vue‘s Analyze dropdown
  • #1542 Update version, logout, and help UI partial (upper right) to have less prominence and more clearly communicate the “Sign Out” action

Fixes

  • #1480 Fix database revocations corner case for roles in the meltano permissions command
  • #1553 Fix bug occurring when loading a report that lacks join tables

Breaks

  • #1553 Fix bug occurring when loading a report that lacks join tables

Create a Meltano account and have our team complete your setup AND host everything for you!

Ready to install Meltano on your own? Get started with $50 of free credit on DigitalOcean with our new 1-Click App. Follow the Getting Started Guide to get going in minutes!

Meltano v1.14.3 is Now Available

Summary of Changes Since v1.14.0 Release

New

  • #1391 Lock all settings that are controlled through environment variables
  • #1393 Add contextual Analyze CTAs for each Pipeline in the Pipelines list
  • #1483 Add login audit columns to track last login time
  • #1480 Add tests to meltano permissions command for Snowflake

Changes

  • #1424 Update pipeline elapsed time display to be more human friendly
  • #1480 Add schema revocations for roles in the meltano permissions command

Fixes

  • #1430 Fix the state not stored for pipelines when Transforms run
  • #1448 Fix AnalyzeList.vue to display message and link when lacking contextual models
  • #1520 Fix bug when updating a dashboard that could undesirably overwrite another existing dashboard
  • #1521 Sanitize user-submitted string before using it in file path
  • #1480 Fix database revocations corner case for roles in the meltano permissions command

Breaks

  • #1553 Fix bug occurring when loading a report that lacks join tables

Create a Meltano account and have our team complete your setup AND host everything for you!

Ready to install Meltano on your own? Get started with $50 of free credit on DigitalOcean with our new 1-Click App. Follow the Getting Started Guide to get going in minutes!

Meltano v1.14.0 is Now Available

Create a Meltano account and have our team complete your setup AND host everything for you!

Ready to install Meltano on your own? Get started with $50 of free credit on DigitalOcean with our new 1-Click App. Follow the Getting Started Guide to get going in minutes!


New

  • #1461 Display toasted notification for report adding to dashboard
  • #1419 Add ability to edit and delete dashboards

Changes

  • #1311 Remove unused meltano/meltano/runner docker image
  • #1502 Update configuration file uploads to occur on save vs. file picker completion

Fixes

  • #1518 Fix bug that caused all text fields to show up as required in configuration modals
  • #1446 Fix bug that could result in a broken report when the report URL was manually modified

Meltano v1.13.0 is Now Available

Create a Meltano account and have our team complete your setup AND host everything for you!

Ready to install Meltano on your own? Get started with $50 of free credit on DigitalOcean with our new 1-Click App. Follow the Getting Started Guide to get going in minutes!


New

  • #1269 Add kind: file so single file uploads can be used with extractors (tap-google-analytics‘s key_file_location is the first user)
  • #1494 Add LIKE options to Analyze Filter UI so users better understand what filtering patterns are available

Changes

  • #1399 Log Modal now has a prompt to explain potential factors in required time for pipelines to complete
  • #1433 Remove /orchestrate route and thus the Airflow iframe as this is overkill for our current target users

Fixes

  • #1434 Fix Analyze CTAs to only enable if at least one related pipeline has succeeded
  • #1447 Various fixes around loading and reloading reports to mitigate false positive sqlErrorMessage conditions
  • #1509 Allow plugin profile config to be set through meltano.yml