HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
apache
thrift
C++2014–2022
apache / thrift

thrift

Apache Thrift

11Distinct people
11Mentions
0Explicit recommenders
11KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Apache Thrift

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:24:10 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year11 dated mentions

Observed mentions: 2014-08-14 21:35:09 UTC to 2022-06-13 13:01:13 UTC.

01232014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2022

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC110
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC303
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC110
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303

What Hacker News says

11 sources
> That's just your choice of how to build your app, right? You could've avoided this by rendering templates on the server and sending static HTML to the client, keeping the business logic on the server. No, that's a requirement on most business cases, my comment stated 'complex and dynamic web apps'. Re-rendering the whole page everytime the user checks a box or clicks a button just to replace some fields in a whole page is (a) terrible UX, (b) hard to track the state between page refresh, (c) wrong practice and (d) bad performance. > Here's just one of ten-thousand other battle-tested options you can use: https://github.com/apache/thrift/ Sure, I should setup a complex and huge dependency for just one of the many problems I highlighted. What a great idea
In Fresh – Next-gen web framework
> "Most of the logic inside the form has to be written two times: in PHP and in vue" Why? That's just your choice of how to build your app, right? You could've avoided this by rendering templates on the server and sending static HTML to the client, keeping the business logic on the server. > "Most enum types are repeated" Here's just one of ten-thousand other battle-tested options you can use: https://github.com/apache/thrift/
In Fresh – Next-gen web framework
An alternative approach might be to use an existing popular serialization format such as Protocol Buffers, Apache Thrift, or Cap'N'Proto and create or improve tools that convert to/from human-readable text formats to the serialized binary format. For example: - Protocol buffers have a text format mode: https://medium.com/@nathantnorth/protocol-buffers-text-forma... - Thrift has readable-thrift which is a human-friendly encoder and decoder: https://github.com/nccgroup/readable-thrift - Cap'N'Proto has a `capnp` tool for encoding/decoding text representations to binary which seems to be officially supported and documented! https://capnproto.org/capnp-tool.html These libraries have been battle-tested by major companies in production, some protocols and implementations have gone through security audits, and in addition each of these formats a
Read the rest
lready has many language bindings, for example: - Protocol Buffer Third-party language bindings: https://github.com/protocolbuffers/protobuf/blob/master/docs... - Apache Thrift language support: https://github.com/apache/thrift/blob/master/LANGUAGES.md - Cap'N'Proto in other languages: https://capnproto.org/otherlang.html
In Ask HN: Who wants to collaborate?
This blog is quite all over the place. >Here we start to see some sources of real bugs. Writing to and reading from a nil channel blocks forever. Of course they block forever. If you read from a channel that nothing is writing to it, you block forever. If you write to a channel that nothing reads from it, you block forever. There's nothing special related to the channel being nil. Trying to assigning to a nil map is also perfectly understandable: a nil map is read only. This is the same as nil slices. "But `a = append(a, 1)` works when a is nil", you might be asking. Yes. That's because `append(a, 1)` is not (always) writing to a. Then it talks about typed nils. Yes typed nils can be a footgun, but I've been writing go code professionally for almost 5 years now and I've been bitten by that exactly once (I've written about it here: https:/
Read the rest
/wang.yuxuan.org/blog/item/2020/09/typed-nil-in-go). In most cases, typed nils are more useful than being a footgun. See https://pkg.go.dev/github.com/reddit/baseplate.go/log#Wrappe... and https://pkg.go.dev/github.com/apache/thrift/lib/go/thrift#TC... for a few examples of typed nils are being useful and providing useful zero values.
In Golang: Know Your 'Nil'
Some research on most of the projects which don't: supervisor: Application supervisor, not a widely used library - it's probably in the top 360 since people install it using pip instead of the distro's package manager carbon, graphite-web and diamond: Components of the time series DB Graphite, see supervisor Thrift: Apparently there's a Python 3 pull request? [1] ansible: Difficult story since they have to support old systems which only support Python 2, so no point in migrating to Python 2 until those are no longer in use (that includes Python 2.4!). This is a really unique use case for Python so it's hard to compare it to the rest. The part of Ansible which runs on the controller has been ported already [2]. google-apputils: There are Debian packages for Python 3, so probably missing the PyPi metadata [3]. Appears to be unmaintained. as
Read the rest
pen: Niche web framework. They seem to be working on Python 3 support [4]. newrelic_plugin_agent: see supervisord python-cjson: Unmaintained drop-in JSON library that can be replaced with something else with no effort [5]. python-openid: There's a Python 3 fork which looks nicer than the original [6]. m2crypto: Porting effort underway, but mostly an issue for existing cde - there's no reason to use it for new projects since python-cryptography is better in all regards python-ldap: Issue for many enterprise Django projects (this is the one library in the list that I personally use), but there's a Python 3 fork so it's fine [7]. INITools: Abandoned, it used to be pip dependency so that's probably why it's in this list (?). marionette: see supervisord pathtools: moved to stdlib in Python 3. So, nothing major left in the top 360. All of the huge blockers like Twisted and Paramiko are now green and I migrated all my stuff over. The Fedora porting project has some great insight into how it's going in the real world: https://portingdb-encukou.rhcloud.com/ OpenStack is interesting, too: https://wiki.openstack.org/wiki/Python3 In general, no major libraries left, but lots of grunt work that needs to be done. Some stuff not on the list, that I encountered: python-dajax: Turns out it's a bad idea to put frontend logic in your backend code, but that doesn't make the dependency go away (great opportunity to finally undo that mistake in my code) wxPython: They decided to do a full rewrite instead of a port so it takes some time. Qt, I guess? [1]: https://github.com/apache/thrift/pull/213 [2]: https://docs.ansible.com/ansible/dev_guide/developing_module... [3]: https://packages.debian.org/sid/python/python3-google-apputi... [4]: https://github.com/whit537/mongs/issues/17 [5]: http://artem.krylysov.com/blog/2015/09/29/benchmark-python-j... [6]: https://github.com/necaris/python3-openid [7]: https://github.com/pyldap/pyldap/
In Python Versions Used in Commercial Projects, 2016 Edition
I suggest you use one repo with sub directories, one directory for API part, one directory for front end part, one for the server part ... Then, when you change the API, you don't have to create 3 pull requests across 3 repos, just ONE pull request and teams can review all the changes together. And your problem of searching for issues assigned to one person across multiple repos is not a problem any more. There are already many good examples of managing multiple modules inside one repo: https://github.com/apache/thrift https://github.com/rails/rails
In Announcing new tools, forums, and features
IDLs are awesomely useful and you can build all sorts of things on that abstraction, especially if you have a parser that produces a standard AST (I wrote a PegJS parser that takes the Thrift IDLs and creates a plain old javascript object AST that can be used for things like: (1) writing dynamic serializers/deserializers for binary data (uber/thriftrw), (2) validators (not yet written, but will both lint as well as check for backwards compatibility when IDLs are updated); (3) bash autocompletion for an RPC api via a curl-like command (soon to land in uber/tcurl)) At Uber, we started with Apache Thrift, but found many things about it limited and broken with dubious code quality for some languages. Furthermore we had more ambitious ideas like application layer sharding (uber/ringpop) and service discovery and routing (uber/hyperbahn). We're
Read the rest
still using the thrift protocols (uber/thriftrw) with our rpc library (uber/tchannel), but could have built on top of another IDL format like protobufs (v3). For those curious about the RPC interface, just check out: https://tchannel.readthedocs.org/en/latest/ The interface supports all sorts of things This is all over TCP right now and designed for performance and service to service communication, but there is nothing preventing the addition of HTTP (via XHR or WebSockets) as a transport for allowing web apps to speak with tchannel services. I contributed to the Apache Thrift implementation that allows this (https://github.com/apache/thrift/blob/master/lib/nodejs/lib/...). The implementation for tchannel would be similar, but rely on XHR/WS in the browser and the `http` module instead of the `net` module in NodeJS on the server. It's trivial to write a proxy frontend that relays TJSONProtocol on the frontend to a Thrift binary protocol like TBinaryProtocol or TCompactProtocol. https://github.com/uber/hyperbahn https://github.com/uber/tchannel https://github.com/uber/ringpop-node https://github.com/uber/ringpop-go https://github.com/uber/idl https://github.com/uber/tcurl https://github.com/uber/tcap etc.
In Show HN: WebRPC – a simple alternative to REST and SOAP

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.