Show HN: Objectiv – Open-source product analytics infrastructure

objectiv.io

88 points by thejansen 2 years ago

Hi! One of the creators here. Very proud to finally be able to show you what we've been working on for over a year now. Curious to hear your thoughts!

Objectiv is open-source (APLv2) product analytics infrastructure. It's built around a generic but strict event taxonomy, open/common data- and infra tools (currently PG, snowplow, working on bigquery with more to come), and the analyses are done using our pandas-like, SQL speaking modeling library called Bach. As a result, we’re moving towards a vision wherein models can be shared openly, independent of product, platform[1] or data platform[2].

How?

- Fully assist the dev doing the instrumentation using tools for ide support, run-time validation, ci integration. No auto capture, but very low-effort[1] instrumentation.

- Scale using proven tech: a single collector writing to PG for small or snowplow to anything[2] for big.

- Feed data into your own data warehouse after validation.

- No tracking plan, but an open event taxonomy designed for modeling, that fits most user interfaces out of the box or can be extended otherwise.

- Take some of our pre-built models off the shelf or use Bach directly to model on the raw data in a notebook.

- Bach generates SQL for the target platform: productionize without lock-in, feed to a BI system, dbt, etc.

Where?

Github: https://github.com/objectiv/objectiv-analytics

Docker demo: https://objectiv.io/docs/home/quickstart-guide/

Website/docs: https://objectiv.io/

Let me know what you think and what platform/SQL backend you’d like to see supported first.

[1] Currently on plain js, react, angular, react native. Future: vue, native android/ios.

[2] Once we’re done building Bach support for all SQL platforms. Now: PG, bigquery in development. Future: redshift, clickhouse, athena, etc.

TeeWEE 2 years ago

Disclaimer: I didn't try it yet!

I really like the approach and vision. However my initial reaction: Why do I want a generic taxonomy for events? Every business has their own domain. Generic click events are not really interesting, but more domain specific events are.

For example for github you would want events like "project.Starred" "project.Cloned" etc. OR for hacker news "user.addComment" comment.Upvote etc. So you would need to build your own taxonomy anyways right?

I do see the potential power of using BI tools that are built upon a generic taxonomy.

Another comment: I don't really like using "TrackedButton" components that replace Buttons. What If i want to use Next.js and want to use the Next.js's Link... It's better to have a "TrackedObject" and embed a Button inside it..

Maybe i'm too used to calling an "analytivs.trackEvent" function manually coded, because we mostly used company defined events.

If you want open source, using SnowPlow + storing it in redshift using a pipeline would also work. But I guess with Objectiv you don't need to setup anything..

  • ivarpruijn 2 years ago

    Thanks for the detailed comments. To create the first version of the taxonomy, we looked at the 50 companies we worked with doing modeling on their existing analytics data (from GA, Adobe, Mixpanel etc) and mapped their product UI’s and data team requirements into one extensible data format. In your examples, the taxonomy would classify these as interactive user actions, with a PressEvent on a Pressable UI element. This way, models can work both on the GitHub and HN examples in one generic way, so there is no need to come up with very case-specific naming and map these once you build a model. If you still have use-cases that are not covered, the taxonomy is also extensible, which enables you to use our validation & data modeling.

    About replacing components: no need to do this if you don't want to, you can either: A) Swap native components without having to code anything, using the premade Tracked<Component> for a specific platform (e.g. `<TrackedButton onClick={handleClick}>Click Me!</TrackedButton>`); or B) Use your own component of your liking (i.e. Next.js' Link) and wrap a TrackedContext around it that automatically triggers an Event (e.g. see https://objectiv.io/docs/tracking/react/api-reference/tracke...).

    We're big fans of Snowplow for scalability and have an early integration where you can run Objectiv data straight into a SP pipeline https://github.com/objectiv/objectiv-analytics/tree/main/bac...

sytse 2 years ago

I love how this goes to the logical end game of Product Analytics, instead of trying to do it in a dedicated product just reuse the modern data stack (PostgreSQL, Snowplow, DBT, Pandas). This way you have all the freedom and you don't have to wait for new data when you have a new idea to test since you can use historical data.

Suggestion: instead of saying APLv2 just say Apache 2, that prevents confusion with the very different AGPL license.

  • thejansen 2 years ago

    Nice to hear that you share our vision on full data stack re-use/control. Thanks for the pointer on the license shorthand; never looked at it like that.

vosper 2 years ago

A note on the site: the automatic switch between “before” and “after” graphics is a bit jarring for me on mobile. I don’t get time to read the graphic before it switches. At first I didn’t even realize what happened and thought it was a layout glitch.

  • ivarpruijn 2 years ago

    One of the creators here. Think you're totally right, going to disable the automatic toggle. Thanks for pointing this out.

memartijn 2 years ago

I have tested this in a React Native project, and integrating it felt like a breeze - just a bunch of search + replace. I did hit a roadblock because of an unsupported version of react-navigation/native, but the team at Objectiv were very helpful and helped resolve the issue. Can definitely recommend trying this out if you're still stuck with inaccurate Google Analytics, want to own your data or want to have the option to inspecting your analytics data on a deeper/more meaningful level.

  • thejansen 2 years ago

    Thanks! The point that you touch upon is quite important: not all versions of all frameworks are supported. We're aiming for recent releases first. For anyone on an older framework wanting to try Objectiv out, ping us, we might be able to help quickly.

peterpeerdeman 2 years ago

I like Objectiv's approach, I believe there is great value in owning your own analytics data and staying in the open source landscape whilst processing the data with AI. We've done some proof of concepts and will keep a close watch on the developments of Objectiv and their AI model ecosystem

whois_anon 2 years ago

Love this team, love their approach. The taxonomy is well thought-through - years of experience compiled into it - and the team has built great tooling around it (in particular for validation and debugging). Really opens the door for reusable models across products.

wdewinter 2 years ago

I took objectiv for a test drive a couple of days ago in our React application. It was pretty easy to get up and running. As soon as the data comes in you can use it directly with familiar tools such as a jupyter notebook. Pretty cool!

mjirv 2 years ago

This looks cool and I love the taxonomy and owning your own data.

But I wonder if you are trying to do too much. For example, why would I use Bach to transform my data instead of just doing it in my dbt project or wherever else I handle warehouse transforms?

  • thejansen 2 years ago

    Hi, thanks for diving in. Yes, this is a lot. Let me try to explain how we got here. Bach will abstract the transformations that make up the models away from the SQL dialect, making models built using Bach reusable on any SQL based data store (once all dialects are supported of course). This allows you to generate the required SQL for your enviroment using Bach, and running that through your DBT or other transformation setup on your warehouse. This, combined with a strict taxonomy, leads to (at least we hope) reusable models between different products/users, and data platform configurations. We've not seen a way to achieve this without doing all of the above.

gjspriensma 2 years ago

Finally! Have been playing around with Objectiv for a few months now. Hit a few problems along the way but the support on Slack has been very good so far.

tijmentiming 2 years ago

Looking good! Would be great to have an official debian flavour package for this! apt-get install objectiv-docker.

  • thejansen 2 years ago

    Thank you, and agreed. We'll have that someday, but currently the easiest and most portable way to deploy is through docker via the objectiv/backend image from dockerhub. We'll have the backend packages in pypi soon, and given enough demand (counted yours) or a community contribution, we'll do dists after.

wdb 2 years ago

How does this compare to things like PostHog or Mixpanel?

  • ivarpruijn 2 years ago

    PostHog & Mixpanel are great for self-service analytics, we aim to do something different. We're building infrastructure around a generic event taxonomy, so data teams can share & collaborate on advanced modeling. We don't do the BI part, but are data warehouse native.