144 comments

[ 2.6 ms ] story [ 55.5 ms ] thread
Having played around with it for a few minutes, this is really cool! The live search is particularly great. Kudos!
I have frequently used devdocs.io on long flights, love the offline mode.
I love everything about the design of this page. Settings, search, etc. You have great taste.
This looks great, I may be able to remove a number of bookmarked doc sites.
Been using DevDocs as my documentation reference for a couple years now, has everything I need with no extra fluff, would recommend.
Reminds me of Dash[1] which is especially useful when configured in your editor: press a key to open documentation for the word under the cursor.

1: https://kapeli.com/dash

But you pay for Dash subscription, this one seems to be free.
And open-source :) (https://github.com/Thibaut/devdocs)

Disclaimer: I'm the maintainer of DevDocs

Well then let me thank and congratulate you for your efforts in building this.

As a long-time dash user in the past, devdocs felt like home and just works nicely and without any unnecessary features.

Subscription? Dash is not subscription based.
Yes, but this is free and more complex.
"Shift+K" does the same in vim. However, it looks for a manpage matching the word under the cursor, so it won't help you unless you're doing C or Perl.
If you live inside emacs, https://github.com/areina/helm-dash/ will use dash documentation and use emacs for the search and display of the docs.

Also, works on GNU/Linux and Windows. Also, free software. Also, I'm the co-author.

This is great, thank you very much!
This is awesome - thanks for sharing your work!
I saw this a while back and it seemed amazing but I was wondering if there's any way to open the actual live documentation page. So for example if you choose the documentation for `Array.prototype.map` then it'll pull up that page on MDN, rather than the locally cached Dash page.

I know the whole point of Dash is to have locally cached, offline documentation copies, but I was thinking it would be amazing to use that to feed Helm candidates, but actually open the real, live documentation page.

you definitely can do it because the only thing that is in the docsets is a uri starting with https?:// or file:/// .

It seems there are some docsets already doing that[1]. Creating your own docsets is dead easy. just a simple sqlite3 file with a single table.

You can find an example I hacked myself here[2] (very hackish).

It's basically creating a table:

    create table searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT); 
    CREATE UNIQUE INDEX anchr  ON searchIndex (name, type, path);
And filling it with data:

    insert into searchIndex(name,type,path) VALUES ('foo','function','https://example.com')


[1]. https://github.com/areina/helm-dash/issues/65 .

[2]. https://github.com/kidd/AllegroLisp.docset

But isn't Dash just for Mac?
yup, "also" meaning "in addition". Dash is not free either, and I'm not its coauthor
Of course, "also" means "in addition". I was wondering what I'd do with helm-dash on GNU/Linux if Dash is only for Mac.

The helm-dash repo tagline on GitHub says "Browse Dash docsets inside emacs", so I quickly dismissed it as I don't use Mac.

Reading a bit further, now I see that it doesn't need Dash to be installed. So that's great! I'll see if an ivy/counsel version is out there.

This was my first thought, as well. I use Dash several times a day. It has been indispensable for me.

There are a few main things that will probably keep me on Dash, for the time being. In no particular order:

1. Global shortcut - Being able to quickly show-search-hide from anywhere is extremely useful for me. I can quickly refresh myself on the syntax of an uncommon function. The faster I can do that, the less likely I am to break my flow.

2. Support for random/obscure projects - On top of community-added docs, Dash lets you point it at any random GitHub project and it will pull down the README. This has come in handy plenty of times for me when using small tools and components. Sure, it's not as nice as full documentation, but it's nice having that README searchable in the same place and offline (see reason #1).

3. Docsets - Dash lets you define groups of frameworks (etc.) and name them. You can even specify which version of a framework to use in the docset. This allows me to tailor my results to a particular stack, depending on which project I'm currently working on.

EDIT: I should read :)

The Dash author engaged in unethical practices and then attacked Apple when they closed his account.

http://www.loopinsight.com/2016/10/10/apple-responds-to-dash...

What? That link doesn't have any proof that "the Dash author has engaged in unethical practices". Neither any other link I could find about the whole controversy. Actually, everyone seems to be saying things are complicated, what seemed to be true actually wasn't, it's hard to take sides, etc:

https://daringfireball.net/2016/10/apple_dash_controversy

Gruber makes it pretty clear in your link that the author of Dash engaged in unethical practices, just not with the Dash app (or the account used to publish Dash). Heck, publishing the phone call alone is unethical, regardless of any of the alleged app review behavior.
I think you or the mods should remove your comments because they are potentially defamatory. There is indeed no evidence that the Dash author himself was responsible, he says it was a family member.
“Almost 1,000 fraudulent reviews were detected across two accounts and 25 apps for this developer so we removed their apps and accounts from the App Store,” Apple spokesperson, Tom Neumayr

They’re allegations, sure. I said that in my second comment. But Tom didn’t hedge his words there.

Well, what is clear to me is that another account, not Dash's author's, engaged in unethical practices. The author said it was a family member, but I can't verify that, so it is still unclear.

Publishing the phone call was kinda dumb, yeah, but it's still pretty far from "engaging in unethical practices". It seems more like a guy feeling cornered, acting under pressure and making bad decisions.

This a most irresponsible post. The situation was somewhat complex and not easy for outsiders to parse out of the crossfire. You state one side's position as fact, quoting only one highly tendentious Gruberish Apple protagonist in support. Is this how fairly you'd like to be treated in public if you got into a spat with a major company? Please have a little thought for the welfare of others before you type.

In any case, it's water long under the bridge now, and Dash is an excellent app used my many developers (including within Apple). Trying to poison the well is in pretty bad taste.

Doesn't seem like a particularly complex case to me.

Facts not up for debate: the developer of Dash enrolled two accounts in the ADP with the same credit card, and these accounts shared at least one test device. One of these accounts participated in obvious fraudulent activity.

Unfortunately, nobody is around to corroborate Bogdan's side of the story. As far as we know, Bogdan made up his supposed relative/friend (ala "I didn't send that embarrassing text to my crush - it was my asshole friend!") to escape blame. And even if his side of the story is true, how is he not partially culpable for the fraud? By enrolling an account with his credit card and giving it to someone else, he enabled them to commit fraud on the App Store. If I buy a gun and give it to my brother and he shoots someone, am I not partially responsible for that outcome?

It's not quite damning enough for me to not use Dash, but it doesn't exactly give me faith in Dash's developer either.

I found it slow. Also, just remembering this now but I came in to work one morning only to be questioned as to why I was downloading GBs of data while I was out of the office. I guess Dash was refreshing the local copy of all the docs every night. Uninstalled it right away.
Slow? It's insanely fast on my 6 year old desktop and doesn't download "gigs" of docs every night...also, what kind of workplace monitors individuals net usage then gets upset at them for downloading "gigs" when their job is to program.
Something similar which I really love for terminal is tldr : https://tldr.sh/

Behaves like a substitute for man pages with most useful examples. Saved me hours of googling and searching.

It also packs well as a fluid app if you'd prefer a standalone (and fluid doesn't seem to purge the cache and lose offline mode like your browser might)
For PHP it's missing the comments at the bottom, which are often essential to understand certain strange behaviours.
I almost always end up scrolling straight to that section in the PHP docs when looking for help. Such is PHP.
Ditto, and I don't even mean it in a bad sense. After you get used to it, this really isn't that bad, this format seems to work for PHP. I'd even say, that because of that PHP docs turn out to be quite better than "clean and nicely written" ones for other platforms.
Worst is that some information is only provided in the comments and not in the documentation itself.
Due to some very annoying behaviour of gratipay (the donation service devdocs uses) I have donated over $100 to them last year of the course of a few months. Not what I wanted to donate, but then again there aren't many websites that I use more often in my day to day work. So I am not too bummed about it.

Great work guys!

Interesting, I don't use the daily, but when I need, I REALLY need it. How come you use it that often is it your main go to? My day to day is mainly googling as a portal to stackoverflow for specific doubts.
It is my goto yes. I use it anywhere from checking how some method or function is named again to finding out what I can do with certain types of objects or classes. The search is really practical for me there. I also peek into the source code of functions etc. it is the only pinned tab I have usually.
Thanks! Your donation is very much appreciated.

Don't feel like you have to donate, though. The app is cheap to host (one of the benefits of an offline-enabled, no-accounts-required, optimized-to-the-max web app is that the backend doesn't do much :P), and I'm lucky that MaxCDN & others are providing free service to the app.

What keeps me going is seeing the impact that DevDocs is having (people using and liking it). So the best way to "give back" is to spread the word, send a thank you note, and contribute (one thing in particular that would be great to see is more/better extensions & integrations with code editors).

(I'm the creator/maintainer of DevDocs)

Can you elaborate a bit about your implementation? I'd love to learn more about the techniques you have used.
I elaborated a little bit in the past here: https://groups.google.com/forum/#!topic/devdocs/T9_FsjB1kHw

I've been thinking about writing blog posts on DevDocs's internals and the techniques it uses for a while, but it's hard to find the time, especially when I already spend a lot of my spare time maintaining/updating the app.

That said, feel free to open a GitHub issue to remind me to write blog posts at some point (if there is interest), or if you have specific questions.

Could you specify more on the front-end code on this project, did you hand-roll your own javascript front-end or did you use a framework? The whole thing is rather impressive and I'm looking to do something similar to your sidebar with my own project. Is all of your open source code open to be re-used/modified?
One of the greatest in-kind sponsorships MaxCDN did for sure. Really happy to see you're still at it after all these years Thibaut!
It happened thanks to you :) And you/MaxCDN also played a part in getting the app open-sourced sooner rather than later.

Happy our paths crossed again here!

This was first posted 1500 days ago - https://news.ycombinator.com/from?site=devdocs.io

It seems that this time it got more traction. Good luck with your project!

DevDocs is old, roughly 4 years or so; I know it from the beginning.

That being said, not every HackerNews reader is aware of every single project in the wild, so re-posting the link from time to time is a good idea, not only to let more people know about it but also to increase the contributions and donations which may be forgotten after the popularity fades away. I can see this re-posted many more times in the future.

Remember that every year new Computer Science students graduate and and they are going to be the ones saying "First time I see this project" next year. So let the re-posts flow no matter what.

I can't recommend devdocs.io enough! It's such a fantastic resource.

* It links to the real documentation

* world class search

* lets you pick and choose versions and languages/frameworks you want to have searchable

* provides a consistent UI across all docs which is fantastic when you are switching between several while developing.

* Is updated with terrifying frequency (I don't think I've ever opened it and NOT had some kind of docs update notification!)

* There are editor plugins available that let you press a key and open the highlighted word as search in devdocs.io

If you use devdocs.io and feel like it has saved you time or money, donate to them on Gratipay [0].

[0] https://gratipay.com/devdocs/

Agrees with all of the above, and would just add one point:

* Ability to tab-select [1] a language to limit your search to.

The lack of this feature in Zeal [2] is one of the reasons I stay with devdocs although i tend to like old-school real desktop apps.

[1] (Write the lang and press tab)

[2] https://zealdocs.org/

In Zeal, typing "javas" and pressing tab causes it to autocomplete "javascript: " for me. Is this what you're referring to?
Aha, perhaps the feature has found its way into a release, after I checked last. Gotta check. Thanks for the heads-up!
Only receiving $16/week when all these Hacker News are pulling in 6 figures.
They would immediately be making more on OpenCollective
Add elm docs and I'll come along.
(comment deleted)
Tried this against some Rails and Ruby stuff..... Wow.
(comment deleted)
For some reason, the theme/colors were a bit of a shock to my eyes. I can't explain why...maybe because it was my first time seeing it.

Compare these two pages:

https://devdocs.io/javascript/global_objects/array/entries

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...

I think the blue "sections" on devdocs are really <h3> so they are not sections at all and it throws me off.

Agreed. The thin and bright text is hard to read.
Devdocs has an option for dark thene I use
Oh my god lol, I can't believe I never saw this. Thank you.
Surprised that R isn't on there since it is a top 10 language. The ecosystem though is pretty huge and R Base without Hadley Wickham's tidyverse isn't very useful for me.

Also would love to see Racket notes.

They also have a chrome extension. Devdocs.io is awesome.
Finally, they added java (seems like the openjdk has all the same stuff as the oracle's Java). That was the only thing stopping me from using it.
I've used this off and on for a while, but the hardest thing for me is breaking the google habbit (or ddg as often as not in my case) and actually performing the search on that site.

I can !dd with duckduckgo to get to devdocs, but I wish there was some natural language processing that knew I wanted to look up a cpp/rust what have you term and send me there.

Additionally, C# doesn't seem to be included, which is a big bummer.

This sounds like a job for a browser extension.
I don't think there's any reason to use this for Rust, honestly. You'll want to unify your dependencies using `cargo doc` and then just browse std documentation on https://doc.rust-lang.org/std/ (and other stuff on docs.rs)
Rust has spoiled me so bad with cargo doc. Even Python feels like a fossil when I can generate a linked doctree in my target directory and use it offline / on demand and generate them immediately and effortlessly if I ever need to fork / patch / use git / etc anything.
According to the docs (http://devdocs.io/help#search) you can actually integrate DevDocs into your search habits by using the browser bar search (on Google Chrome, at least).

Go to search bar -> type in 'devdocs' -> hit tab ("Search DevDocs"). You can then search directly.

It's pretty awesome.

If you use duckduckgo, adding !dd to your search does the same thing.