Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: EventNative – An open-source, user event collection service (github.com/ksensehq)
228 points by pwys on Aug 11, 2020 | hide | past | favorite | 45 comments



We have in-house almost the same thing which is also written in Go. It uses gRPC and mobile clients are automatically generated by protobuf.

This kind of internal service is required if you are operating a business for children and families.


That's the exact reason we decided to build EventNative and opensource it. We noticed that a lot of teams are building similar platforms in house


Can you please clarify, is this for bringing lots of different analytics sources to the same location, or is it for capturing events itself? I’m having a hard time finding whether I could use EventNative by itself to capture, for example, how many visitors went to a certain page. Would I need to route google analytics through EventNative to get that type of data?


We actually support both! You can route everything that is captured by GA or Segment (analytics.js) through your EventNative backend in intercept mode. Or you can configure EventNative to capture all these events in direct tracking mode.


Great! Looks really interesting, thanks for sharing


Ok, if this project gets traction it might replace my own analytics solution based on JavaScript, Go and ClickHouse. I'll stay tuned about it. Are the maintainers in the room? I'd like to exchange some ideas.


Maintainers are here! (it's me, @pwys and @xtreding) Actually, we have a Slack: https://eventnative.slack.com/ You're welcome to join!


If you're posting a Show HN here, please exchange ideas here. That's the whole point of Show HNs as well as the purpose of this site, and starving this thread of discussion is not going to help you.


I do understand the purpose or your post and I celebrate it, however this medium might lack some of the features Slack has which makes it quite easier to follow up ideas.


Looks like that is the sign in link, here's the one to join! https://join.slack.com/t/eventnative/shared_invite/zt-gincgy...


Can you send me an invitation to pachicodev at gmail dot com?


done!


Thanks a lot! I'll join asap!


Can't tell from the docs, but how do you deal with "stubbed" events that are triggered before segment/GA loads? Are you able to do anything to make sure your snippet loads fully before other third party scripts that might "do work"?

I guess put more simply, do you need to do work when implementing to make sure you don't miss any of the existing events being captured, or does this rely on the same developer implementing all three?


We actually ask to insert a snippet after GA / Segment initialization code.

The algo is a follows: a) check if ga / analytics object is present b) add interceptor c) if the code was fully loaded (not a stup), send "fake" pageview event (which has been already sent), intercept it and send to EN backend only (not the original backend).

Also, we received a pull request that won't require EN code be inserted after GA/Segment. It tries to get window.ga/analytics object. If it doesn't exist, try the same thing in 1 second via setTimeout. We most likely with merge it to master soon


What I gets me wondering is that by having your own hosted solution you bypass adblockers but this implementation requires GA to be loaded, which is what adblockers block in the first place. Am I missing anything?


While we do have a hook to intercept GA data, it is actually optional! You can use the self hosted JS tracker that we include with EventNative and serve it from your domain.


Which filter should be added to uBlock Origin to block it?


Is the intent for EventNative to be used as a way to capture events in an eventsourcing pattern, where custom events may be generated by microservices or other applications? A follow up if that is the case, how are schema migrations handled over time


Not really :( We design EventNative to collect data solely for analytics purposes. However, you still can send events from microservices as well. We're building server-2-server HTTP API and will hope that people contribute clients for popular languages


Congratulations on Shipping !

This is an interesting problem to solve .

ClickHouse support will make it way more interesting.

Are you planning to leverage Materialized views ?


We actually working on ClickHouse integration right now, it will be shipped next week!

Re: materialized views - since not all DWH support them, we're not sure how can we leverage them. However, what do you have in mind? Maybe we're wrong!


How will the visualization work? Any open source tools/queries available to view the daily metrics?


Great question! So far our users query their metrics directly. For visualizations you should be able to plug in the opensource tool Metabase.



We solve the same problem, but with different approach: we aim for very quick-start: snowplow consist from multiple services, EventNative has everything in one service. Also, we have more destinations in pipeline, also we're going to collect data from more sources as well (Google Ads, Facebook etc).

Overall, snowplow is a great product, but they build for more complicated data pipelines rather than EventNative. We want to keep things simple


Also worth checking out PostHog (open-source): https://github.com/PostHog/posthog

We just got it setup and it goes a bit further than EventNative by including a frontend interface. It's more akin to Heap and a superset of most of what EventNative has.


PostHog is a great project, I've actually talked to their founders in the early days and we use them! They're more similar to Mixpanel vs EventNative being n event collector focusing on processing large amount of data at scale (our first destinations were RedShift and BigQuery).


Just curious, do you also detect if content in the web page is changed or if content is blocked by adblock?


We are not trying to bypass adblock. If selfhost EventNative on track.yourapp.com, AdBlock has less incentive to block JS code on yourapp.com. It doesn't look like 3rd-party tracker, just like a part of you application (you can even host it at yourapp.com/en if you reverse-proxy with nginx


Understood, I'm just wondering if you offer the ability to detect it and report it, not mitigate it.


Well, you can use EventNative and Google Analytics at the same time and just compare the numbers


Can you remake or slow down that gif on your readme? It goes way too fast.


Just did :)


Can this replace Segment if I just want events to go to a postgres DB?


Yes! We rolled out Postgres as a destination yesterday. And unlike Segment we're free and hosted on your infrastructure.


This is going to save me $1,000s per month. Thank you so much. Is there a good way to give back?


Spread the word and send us a pull request sometime :)


Would this be a replacement for something like Divolte? If yes, any specific reason why one should choose EventNative over Divolte, except for the "made in go" argument?


Took a look at their github. Great product! However, it requires Hadoop or Kafka cluster setup (=devops resourced). We designed kSense to be a simple as possible and have as few dependencies as possible.

Besides, if you want to data to land at BQ/CH or RedShift with Devlot, you'll need add a 3rd-party Kafka->DWH layer. I'm pretty sure there'are many oss options. Not sure if they can automatically generare SQL schema from JSON object like EventNative


any comparisons with RudderStack?


We anticipated that question :)

RudderStack is focusing on replacing Segment.com completely, we focus only on a part of the problem: getting events to DWH. Also, we don't have a UI.

By narrowing down the focus, we think we can do a better job sending data to DWHs. One example: we automatically create SQL schema based on JSON structure. You can send

{ "any": { "custom": "a", "field": "b" } }

To EventNative and we'll create any_custom and any_field columns in DWH table on a fly.


RudderStack founder here.

Because we are Segment event structure/API compatible, there is an inherent structure in events. You can pass arbitrary JSON but only inside the properties or traits field of track/identify call. We do automatically create the schemas for those cases.

Congrats on your launch!! Glad to see more projects in this space. Would love to checkout your repo and share ideas etc.


This is really cool. My first impression is an open-source replacement for Segment.


Thanks greg! Kind of like open-source Segment, but we focus on data warehouses as the destination. Were are you looking to send your data?




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: