Hacker News new | past | comments | ask | show | jobs | submit login
OpenDrop: An open Apple AirDrop implementation written in Python (github.com/seemoo-lab)
428 points by tosh on Jan 2, 2022 | hide | past | favorite | 127 comments



I would be interested in an overview and comparison of all the available options to solve this kind of problem. Here is a list of some services I’ve used successfully in the past.

SnapDrop

- Site: https://snapdrop.net/

- Source: https://github.com/RobinLinus/snapdrop

ShareDrop

- Site: https://www.sharedrop.io/

- Source: https://github.com/szimek/sharedrop

FilePizza

- Site: https://file.pizza/

- Source: https://github.com/kern/filepizza

Wormhole

- Site: https://wormhole.app/

- Source: Closed (for now)


The original WebWormhole, from before its name got stolen and productized, is still available and open source:

https://webwormhole.io/

https://github.com/saljam/webwormhole


Yes, thank you for this! I honestly couldn't remember the name, and found the other one and was surprised it said it was closed, as I thought I remembered it being open. Appreciate you providing the original.


You can also take a look at the following:

Croc:

- Site: https://schollz.com/blog/croc6/

- Source: https://github.com/schollz/croc

Magic Wormhole:

- Source: https://github.com/magic-wormhole/magic-wormhole

Send (A fork of Mozilla's Send):

- Site: https://send.vis.ee/

- Source: https://github.com/timvisee/send

- CLI: https://gitlab.com/timvisee/ffsend

I've personally used Snapdrop and Croc before and they're both very nice


Note, none of these options seem to include device-to-device discovery/rendezvous.

AirDrop's use of wireless technology to discover (bluetooth) & connect (wifi) devices remains a great frontier few have explored or tapped. Sad.


It's a real shame.

I've been fiddling away with OWL and OpenDrop for a few months now, trying to get it working on a Raspberry Pi Zero.

The goal was a digital picture frame that accepts Bluetooth and AirDrop pictures. The bluetooth part works fine... but it's the Airdrop part that's dead in the water at the moment.


It would be great to see something like OpenDrop garner more support and unify AirDrop usage across all major operating systems. Unfortunately for now it is only available for use with macOS and iOS.

Edit: Apparently some support for linux is possible.

> As AirDrop exclusively runs over Apple Wireless Direct Link (AWDL), OpenDrop is only supported on macOS or on Linux systems running an open re-implementation of AWDL such as OWL.


Another option (also not Airdrop compatible) is https://github.com/akovacs/uploadserver which is a Rust (Rocket) web server that you can run on a local machine. Open a browser and navigate to the machine's IP address at port 8000 to upload/download files from the web form.

Disclaimer: I know the author.


Batteries included. Run:

    python3 -m http.server
and go to port 8000.


You can't upload, but if its just download (on a single thread) this is pretty good.


Doesn't look like any of those are airdrop compatible.


thx for the clarification


AirDrop is brilliant but it fails silently, no error messages - nothing. At best, it says that it was cancelled.

Does anyone knows how to debug it?

I also wonder, why this type of file transfer isn't the industry standart. It's so straightforward(when it works), why would anyone transfer files in any other way? Okay, maybe a transfer history can also be useful.


This is true for most Apple protocols in my experience. I’m supposed to be able to control my Homepod from my watch with a tap but it never works. Sometimes I can’t use the Homepod for minutes until it shows up. iMessage regularly fails to show the blue name for contacts, FaceTime is randomly unavailable for certain contacts, Airpods randomly disconnect, Airdrop rarely works. Tethering is also kind of spotty. The watch Walkie-Talkie function is terrible, dropping bits of the message. How they even implemented a working TCP/IP stack is beyond me. Lo and behold the most reliable “protocol” is HomeKit, but even that is randomly unable to persist name changes.


I’ve encountered many of these as well and have always assumed this was somehow the result of trying to make everything “just work”, wherein providing detailed user feedback or error messages would be some kind of admission that it hadn’t “just worked”.


It either "just works" or "just doesn't work"


I've seen one of the Bluetooth guys from Google Glass say that it's perfectly normal in the industry to silently restart the Bluetooth stack before every connection attempt.

https://news.ycombinator.com/item?id=26647981

I guess Apple should adopt that too, since toggling Airplane mode on and off is the usual fix for issues with services layered on top of Bluetooth?


Heh “should”


My experience suggests that this is true for most Apple products. It either works the way Apple has decided it should work, or it fails silently and mysteriously.


I find a lot of the grief with these protocols is driven by which wifi router is in use. When using the old Apple wifi routers I never had trouble with homekit, airdrop, handoff, airplay or any of the zeroconfig network stuff: as soon as I switched to other brands the issues would pop up (including ones that oddly seem to persist even after disconnecting from wifi - but then disappear when using a different user account on the same machine).

Because of this I feel Apple could do a hugely better job in all of their wireless protocols, as it stands the only truly stable networking appears to be between two iphones.


Specifically with Homekit, a wired Apple TV and good quality home networking equipment with wired access points makes a world of difference. I use Aruba Instant On, but I have had good experiences with Orbi at higher prices and Linksys Velop at the lower end from Costco. Also, if you have a lot of Homekit stuff, it is best to use devices that have their own Zwave or Zigbee or whatever hubs that are then connected via ethernet into your network, to cut down on how much chit chat is flying around on WiFi, especially from cheaper quality homekit devices.

I am overall unimpressed with the consistency of wireless technologies, especially since Apple no longer makes the equipment that provides the backbone (the router/access points). You usually have no idea what quality radios and programming various wireless devices are equipped with, so it is just a crapshoot when dealing with it.


I actually have the exact opposite experience. I have tried multiple different brands, all of which work JUST FINE with any other device, Android, internet connected devices, even my iPhones will work in every single room of my house.

Literally nothing I can do can make every HomePod on my network “just work”.

I would pay literally twice the amount of money for a HomePod with a fucking Ethernet port. Siri itself works amazingly well with it: when it can communicate.

The dream is to be able to wirelessly and effortlessly play music throughout my home, but I’m about to just give the fucking HomePods away and just wire speakers to every room in the house, even if it does cost more, it’ll actually fucking WORK.


Yes, it would be much nicer if HomePods had a wired option.


I bought 4 HomePods and they are easily the buggiest product I’ve bought non 30 years of buying almost everything Apple makes. Disgusting.


Many "just works" things on the local network start failing for me when I'm using a VPN. Maybe check whether that's the reason. But yes, generally the reliability is so-so. Also, the feature to use Apple Watch to unlock the Mac or iPhone works mostly, at best.


I don’t use a VPN and I don’t think it’s my network because I don’t have any problems with “old” protocols (UPNP, samba, RDP/VNC, SSH, everything on top of HTTP). I wonder what Apple’s protocols do that makes them so error prone. If it was one or two of those I’d say it’s a bad department but the amount of errors suggests a deeper problem in the way Apple develops these things.


Also my experience.. Super unreliable. It works, as long as you don't touch your phone/laptop, and don't have any network hickups.

Still, it's the only thing that works


When I was traveling from Sharm El Sheikh through Sinai to Israel in the bus I’ve transferred 40GB of photos and videos to my friends on iPhone 6S. Imagine this on Android 5 years ago - they (Google) only managed to copy AirDrop with same functionality (wifi + bluetooh) only in 2020 with Nearby Share.


Not sure if that's a real question, how you would have copied files 5+ years ago between phones? Support for USB host mode was introduced with Android 4, released in 2011, but would have required the use of an OTG cable so that would likely not have been an option.

Popular Android file managers at the time had file transfer capabilities so that was probably the quickest. The advantage is that they used normal file transfer protocols which were available everywhere so the other party didn't require any special support.

However a decade ago all phones had SD cards, because their internal memory storage was so small so you needed them should you wish to use the camera beyond any trivial amount. So just copying that way would probably have been what most people did.


Yes - similar story… I had to use it at airport security in south east asia when I needed my hotel booking to get through… my colleague was able to airdrop it to me even though we had no cell or wifi connectivity


Samsung phones have had this feature for years. So if you had the top of the line androids, you would have been able to do the same thing you did with your Iphones. I see many people make the mistake of comparing $1000 Iphones to the cheapest $200 android phones and use that as evidence of Iphone superiority. I guess we have Apple's marketing and brand to thank for that.


Never heard of such features on Android or Samsung despite my Android friends use them whole life and AirDrop was one of the reasons some of them switched to iPhones. There were some things where you needed to put smartphones back to back and it worked probably in one of 100 times but nothing like AirDrop. That’s why Google failed with wifi direct and other childish approaches.

And iPhones with AirDrop cost like 100 usd for 5s


> Never heard of such features on Android or Samsung

S beam used to exist in Galaxy S4, which launched in 2013. It used NFC and peer to peer wifi to transfer files at high speeds.


Why not just use a cable and copy the files? Oh wait you can't do that on an iPhone. You don't have the freedom to.


Of course you can use a cable, but they are unreliable. They tend to break, corrode, get dirty, disappear, have incomparable ends(one side USB-A, the other one micro USB, lightning - whatever) that one of the devices don't accept.

They are also bulky and the transfer speeds are slow. Airdrop can transfer gigabytes of data in minutes, which is only possible with the latest wired interfaces that only the newest devices have and not all support file transfers.

iPhones tend to last 3-5 years or even more and iPhones from different generations can transfer each other files through AirDrop. Not everyone has the money to update their phone each year and many who can update think it's wasteful to do so that they can use the latest wired file transfer method.


You recommend buying 5-10m cable and connect people on different seats in the bus/plane/pool/whatever? Which century is this?


Android users are carrying around data transfer cables?

Hey guys, get a load of this!


Uh, I'm on Android ans I use Syncthing, not a câble.


" Android users are carrying around data transfer cables?

Hey guys, get a load of this!"

...says the guy with a huge dongle in his pocket.


I would love to see this caricature of ios users, what dongle do you imagine we carry and what purpose does said dongle serve?


I was mostly thinking about Macs at the time I made the joke, because very often an iOS user is also a Mac user. Where I work, Mac users always have to carry around dongles.


I think it is the other way around -- almost always a Mac user will be an iOS user, but there are plenty of iPhone users without Macs. At least in the US. iPhones seem to be around 50%-ish of sales in recent years, while Macs are not as popular, somewhere around 15%.

https://9to5mac.com/2021/07/13/mac-market-share-q2-2021/

https://www.phonearena.com/news/apple-iphone-record-sales-us...

Of course, there are lots of competing estimates for this sort of thing, but the numbers are so far apart that I don't think it matters too much.

Personally, I have an iPhone because I'm completely uninterested in cellphones and just want something that I don't have to think about too much/will be supported for a while. My computers all run Linux, because computers are cool, and fun to tinker with. Maybe someone who grew up in the era where cellphones weren't so useless will have a different perspective, though.

WRT dongles -- I dunno. Some of the popular Macbook models don't have HDMI ports, right? That seems pretty annoying. But my ZenBook lacks a headphone jack! The moral of the story is I guess that OEMs just want to fill our pockets with dongles. Or maybe selling replacement dongles is the solution to the post Moore's law era, since we don't have to replace our PCs anymore.


That makes sense, thanks for the info. Where I work there are lots Mac users, so the Venn diagram of iPhone users who use a PC isn't as noticeable. :D


Really depends. Our company is entirely Mac. Everything “just works” wirelessly. Like AirPlay for conference rooms, my external monitor is USB-C, etc. No dongles necessary. It’s only when going to other clients where I need to carry around dongles because they don’t support AirPlay or their Wifi network requires several days advanced notice and a urine test before you can get access.


ah I see. with regard to Macs, I skipped from the 2015 macbook model to the 2021 macbook model and I probably would have held out longer and therefore never needed a dongle, but I digress.

back to iOS. no dongles for me there either. my headphones have been wireless for almost a decade, and the charging ports are pretty ubiquitous.


“ ...says the guy with a huge dongle in his pocket”

No, just happy to see you


I thought it multiplexed over Wifi, Wifi Direct and bluetooth? So much for that.


> I also wonder, why this type of file transfer isn't the industry standart.

I would assume because it's technically complicated, using multiple protocols under the hood. That's fine if you control all the hardware on every supported device, but not great for building interoperability.

Bluetooth file transfer is a standard that works, but it's slooooooooow!


A major failure point for me is devices simply not showing up as available.


I’ve got an MBP that doesn’t show up, and never has, but it sees the rest. Any other macbook or iphone I’ve tried AirDrop with just works, but not my MBP.


I've had trouble with airdrop from phone to mbp when the mbp was on VPN. I don't know how airdrop works but I'm guessing the fact the VPN takes over DNS (and blocks requests to all other nameservers) has something to do with it.

Who knows though. Apple's engineers love writing software that doesn't produce useful logs.


They do love clogging the logs with useless messages, though, as anyone who’s opened Console can testify.


I've had similar experiences.

iOS devices always show up, no problem.

Macs at home only do occasionally. Until the latest macOS update, my MacBook Pro would only show up if I opened an AirDrop Finder window.

But when I was in the office, my work group of about 15 people would AirDrop files back-and-forth to one another all day long, without a hiccup.

It is a mysterious beast.


> Does anyone knows how to debug it?

Toggle Airplane mode on and off.

Bluetooth is problematic on every platform. Restarting it is the usual fix.


   sudo killall bluetoothd
This fixes if the error is on the Mac side. On iOS you have to reboot the device.


Toggling bt/airplane mode can work for iOS instead


The furthest I got was, on macOS, I restarted the daemon with `sudo launchctl stop com.apple.sharingd` followed by start. This however didn't fix it for my case, and I was not able to find any deeper debugging steps on my iPhone. Perhaps rebooting the phone would have helped.


It‘s brilliant until a pair of devices enters a state where the target does not receive airdrop notifications anymore, while the source is stuck on „waiting“, which can only be resolved by restarting the devices.


When AirDrop doesn’t work I just turn Bluetooth off and on on the device. That’s usually enough.


Sometimes it is for me, sometimes it isn‘t. It fails up to 25% of times.


Console.app will give you all the error messages you ever wanted. And more.


I believe AirDrop is a a great example of how Apples vertical integration and full ownership of software and hardware really thrives. It may not offer interoperability with other platforms, but that’s because other platforms don’t have the control needed to implement the same level of integration of hardware and software needed.

Without the direct low level control of the radio hardware they would not have been able to integrate both Bluetooth and WiFi in the way that AirDrop does.

I hope one day standards for this type of functionality appear so that other platforms can implement it. Ideally apple would contribute their tech to create the standard but that’s probably wishful thinking.


Airdrop is a good example that a easy to use but unreliable technology will beat a hard to use but reliable solution. Airdrop sucks, but even my mom can use it.


> I believe AirDrop is a a great example of how Apples vertical integration and full ownership of software and hardware really thrives.

I guess you don't have two iDevices then? Airdropping something constantly and randomly doesn't work with no popup on the other side. It's totally embarrasing given that they have control over soft and hardware. I'm puzzled how it's even possible to screw this up so badly and leaving it like this for years.


No I do, and the 95% of the time it works makes up for the 5% of the time it doesn’t.


> but that’s because other platforms don’t have the control needed to implement the same level of integration of hardware and software needed.

I seriously doubt this is the case. We're in a thread where people are posting dozens of implementations that work perfectly fine on other hardware.

> Without the direct low level control of the radio hardware they would not have been able to integrate both Bluetooth and WiFi in the way that AirDrop does.

This... is also not necessarily true? Android lets you send arbitrary data through WiFi Direct and Bluetooth alike, I'd really like to see a detailed breakdown that explains how that modulation isn't possible on standard hardware/software stacks though.


Does WiFi Direct et al even work? I've tried a couple of time to share stuff using a wireless methid from my android device to other Android devices and have never managed to do this successfully. What's the magic trick for doing this Android to Android?


AirDrop works perfectly fine on a Hackintosh given you have compatible Bluetooth and WiFi hardware.


Windows has a lot of integrated solutions like that. I think Linux is the main outlier where there's nearly infinite ways to configure the whole OS and each component has at least 2-3 software alternatives (init systems, desktop environments, network management components)


They historically have opened source similar protocols, e.g. they open sourced rendezvous. But generally there would need to be an interoperability reason for them to do so. AirDrop seems like a good candidate for this.


There's Nearby Share on Android.


I went from MacOS to Linux recently so I was going through similar projects and there is one important caveat: You have to have WIFI adapter that supports special mode (active monitor mode with frame injection).

Without compatible wifi adapter this will not work unfortunately :-(


Make me want to setup a raspberry pi in a public place and just see what sort of things people send to it.


Or the reverse of that where it sends a random meme to anyone walking by.


Oh no, a thousand marketers just had the idea of automatically airdropping advertisements to passers-by. You could even structure it as a lottery-esque type of thing, only giving out good coupons or discounts to random individuals at random intervals, prompting people to loiter and wait for theirs.


You joke, but Apple rolled out some BT-based beacon stuff that allows stores to do some user tracking at short range -- and it can be used to pop local notifications. I don't think stores have gone down the "you're here and we're going to advertise to you" route (since that'd be creepy as hell), but its more grist for the mill.


When I walked into the local Apple store circa 2019 I was greeted with a “welcome to Apple” notification from the Apple store app. It’s the only example I’ve seen of iBeacons being used that I personally know of.


The default is to only accept transfers from people that are in your address book.


If I understood their paper[1] correctly you can just use a popular phone number that a person walking by is likely to have in their contacts, like an emergency line number.

My mobile telco's SIM comes with a couple of contacts on it like their customer support line. I don't know anything about AirDrop, but I assume this will work.

[1]: https://www.usenix.org/conference/usenixsecurity21/presentat...


As far as I understand the protocol, you'd need a certificate signed by Apple in order to be able to masquerade as that contact in somebody's contact list, and Apple only signs these after phone number or email confirmation.


> We support contacts-only devices by using extracted AirDrop credentials (keys and certificates) from macOS via our keychain extractor.

This should make it clear that you can’t just claim any phone number or email address.


Hah, make it give out cryptocoins, and take the idea of peasants waiting for royalty to make it rain money to the 21st century, where it all happens digitally/using a smartphone.

Did kings and emperors even do that in the old times?


Before the pandemic, one of my friends used to have a hobby of going to bars and conventions and AirDropping pictures of ducks to strangers who left their AirDrop turned on.


Was it really ducks, or was it an autocorrection?


They were ducks. Mallard, wood duck, those Chinese ducks with the fancy feathers, he had them all.


Pavel Zhovner, creator of Flipper[1] had this cool post [2] in June 2020 on how he used Apple AirDrop for automated dating and fun. It included the phone number recovery component as well.

1 - https://flipperzero.one/

2 - https://m.habr.com/ru/company/ruvds/blog/505384/


wild guess: dickpics


This was a thing: https://piratebox.cc/start : open WiFi network that's not connected to the Internet, but it had a forum software. I even bought a simple router and got it installed, but I sadly never set it up in public. A friend who was involved with a local hangout got interested in the idea of an "Internet" where you had to physically go to the location to access the content, although I don't think he set it up there either.


I have been having a huge problem getting pics and videos out of my partner's iPhone. We don't have a Mac or Windows to run iTunes. The only way I have found is to upload pics to Google Drive but then I have to keep the app open on iPhone until all pics are uploaded and bringing Google in between doesn't feel well.

Is there a way to transfer pics from iOS to Android wirelessly and locally similar to Xender or Nearby Share on Android.


Do you have a Linux machine ? If so, use libimobiledevice to connect your phone with a cable. the Arch Wiki walks you through syncing your pictures [0] from an iOS Device to a Linux machine.

For wireless / through LAN:

If you want to transfer pictures/files/practically anything that can be uploaded through a web browser, you may use something like [1] snapdrop, it allows you to transfer files securely on a LAN Network, using WebSockets.

[0] https://wiki.archlinux.org/title/IOS

[1] https://snapdrop.net/

Edit: specified (not)wireless


Another way:

I mount a shared directory (from my NAS) with Files, and save a copy there (connected with Wifi).

The other device can then access it similarly.

You could also connect both apple ids as a family and have iCloud sync them maybe?


> OpenDrop automatically sets DYLD_LIBRARY_PATH to look for the Homebrew version. You may need to update the variable yourself if you install the libraries differently.

FYI for those thinking of doing this, and who would implement it as looking in /usr/local - make sure you also search in /opt/homebrew as this is now the default for Homebrew installations on Apple Silicon based Macs.

https://docs.brew.sh/Installation

https://www.reddit.com/r/MacOS/comments/jw9guu/why_did_homeb...


I was at the drug store trying to print photos the other day; I was required to bring either an SD card, a USB drive, or a phone with their custom app installed, which I'm never gonna do. I thought to myself, "why on Earth is there no cross-platform version of AirDrop?" and here we are :D


It would be great to be able to drop .epub files to my main machine.

Then have those automatically converted into .mobi format by calibre, and finally sent on to my kindle.

I suppose I could set up something to just watch for new epubs in downloads though.


As a Debian and Android user, can anyone help me understand how AirDrop and this python implementation differ from or are similar to Syncthing and/or Firefox Send? Is it basicly the same idea?


Syncthing and Firefox send both incorporate a 3rd party publicly available server which both parties contact over the general internet.

Airdrop is done direct device to direct device, without intermediate, over wifi.


Syncthing is p2p, a relay is supported for when both clients are behind NAT on different networks. It supports local network discovery, but the use case is different. It's for syncing files between your devices, not one off transfers.


Nearby Share is the Android equivalent.


Wonder if there's anything like this for the iWatch and Android.


That's Nearby Share for Android.


BTW, is there one to share between iOS and Android?


I tend to use snapdrop.net when everyone is on the same network otherwise https://www.sharedrop.io/ works well too


Corporate policy blocks Airdrop and removable media, so Sharedrop is my preferred method of transfer.


(not exactly the same but when you control both devices:)

Taildrop

https://tailscale.com/kb/1106/taildrop/


Disclaimer: We built it. Airdrop like functionality for all platforms.

Checkout https://quickit.adidevsoft.com


This looks like a nice tool, but the killer feature of AirDrop is not requiring a local network. The p2p nature of it is why it’s so nice to use.


Syncthing


Syncthing is great software… but it isn’t in the same genre of “send a random one-off file to a person physically close to you with no advanced setup"


Could this act as a dead drop? Just have this running on a Pi Zero in a public place as a way to covertly transfer info?


Does Air Drop use bluetooth or is it network facing? I always worry about yet another attack vector being opened up. Usually any new usability feature like this is designed with security from the ground up which is a misnomer for riddled with unexposed security holes. I always recall the promotion of JAVA as being the security standard bearer but look where that ended up. The best way to secure an unwanted feature is to disable it permanently.


AirDrop never was hacked. It uses bluetooth and wifi to auth/search/transfer. It doesn’t require any existing network so it works in the desert or in the middle of the ocean.


AirDrop has had several vulnerabilities. Some of them were reported by the same group of security researchers who developed OpenDrop.

ADWL, the underlying protocol, had a zero-day that allowed pwning every iOS device in radio range with no user interaction.

https://googleprojectzero.blogspot.com/2020/12/an-ios-zero-c...


Were any of them actively exploited?


That's slicing it rather finely. After transfer is complete, the host device opens the transferred data. When combined with CVE-2016-4657 on an unpatched device, they allow an attacker to gain control of the victim's device after they accept the airdrop. We can call that a Webkit vulnerability instead of Airdrop (because it is), but end of the day, Airdrop is another route for attackers to gain access to your system. You can choose to enable it if you deem it useful enough, but it would be naive to blindly believe "it's fine".

Now, the victim has to accept the Airdrop payload, and Airdrop has limited range, so it's not as scary as the Pegasus iMessage exploit which was totally remote, but I wouldn't bet my life on the Airdrop code having zero bugs.


Bluetooth to start the handshake than a protected adhoc WiFI network between the two devices.


Is there any Airdrop alternative for Android - Android and Android - Windows devices in the same network?


For Android-Android, there's Google's nearby share. It's built into GSF so every single Android phone out there has it out of the box.

I reverse engineered enough of its protocol to be able to transfer a file from my phone to my computer over LAN. I really need to do a writeup on this stuff, and also finish my macOS app to be actually usable.


Could you share it?


Would it be possible to make this work on Android? Airdrop is the one thing I really wish I had


I wonder if this could work with circuit python to drop updated programs …


Is there a particular reason they chose GPL 3 over an MIT license?


There is "Open" in its name. Author probably doesn't want anyone to create more closed source software using it.


Why is this downvoted?


Presumably because the merits of GPL vs MIT are discussed so often on HN that people don't want any more of that.


Also: The creator probably has a reason why they chose the license. This comment pretents to be a question, when in fact it just expresses unhappieness with that license choice.

If you are curious why they chose the license, why not ask them?


Asking "is there a particular reason" comes off as quite bitchy and dismissive.


Maybe because that’s not the place where to ask that question. OP should open an issue on the project to ask them instead of the HN community (who probably don’t know better).




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: