Zeal is an offline documentation browser for software developers
zealdocs.org
zealdocs.org
If we were grown ups, all software authors/vendors would be providing their reference docs in a standardised form, findable, downloadable and displayable by a wide range of tooling, consistent across languages, IDEs and platforms. Zeal is the closest we have, and it's a noble effort, but IME it doesn't solve the problem well enough to be useful because there's no buy-in from the people producing the docs.
(First to mention ChatGPT gets slapped with a wet fish. Just try me.)
To stay on topic, I feel the pain: Zeal is so nice I curse when I need to look up something in the docs that aren't supported (Django REST Framework, in my case), since they use a different doc framework and can't be easily prepared for Dash/Zeal.
Back in the days of yore, software engineering teams led by greybeards used to be conservative in what dependencies they import into the projects. Those days are gone! Everyone imports everything today without any discerning eye.
That's even considered a feature today! If you don't have a language package manager that allows you to transparently import tons of stuff you've never heard of, then the language is considered crap.
I wonder why this trend is happening, especially when python in particular has a bunch of standards and tools to make generating full API docs pretty straightforward.
I also get the sense that there is a growing movement among programmers that API reference documentation is useless, or not worth putting effort into, because it's possible to go out of sync with the code and "nobody reads that anyway". I've heard people say things like "if you're advanced enough to read reference documentation, you're better off just reading the source anyway." It seems to be rooted in some kind of combination of extreme cynicism, a distorted sense of how people who aren't raw beginners learn to do things, and of a kind of false minimalism, wherein API documentation is old fuddy-duddy stuff for Java and C++ developers, and the new friendly easy way is to just read the examples. Such libraries also seem to exhibit a poor separation of public and private interfaces, so maybe it's just a reflection of people being bad at designing libraries.
I normally do end up reading source code, but it often introduces unnecessary hassle because while it's great for "what does this function do?" type of stuff, it really falls down when you want to know "what type of functions fall under this module" since you end up navigating up and down through a lot of imports that make sense for code organization but are abstracted away at the point of use.
There used to be some controversy (around 2015) when the author (single dev) put out yet another breaking version with new license upgrades. The free version was artificially slowed down. He added a new search backend and wanted to be compensated. So all users had to pay again. I upgraded 3 or 4 times. I think it’s a great tool that solves a problem. Some feel that he only wrote a parser/display tool and that the price is too high. I wished I came up with the idea though ;)
I recently discovered devdocs.io and the emacs integration[1] and like it so far.
The reason is that most of the time, I want to read documentation for a specific version of whatever thing I'm using. Zeal only has docs for the latest version, or in some cases, major versions. Take Ansible and Python, for example. These tend to have breaking changes, new features, and hard deprecations in their minor version releases. So knowing that I'm looking at the docs for Python 3.8 vs 3.11 can be very important.
One of my "someday" projects is to write a doc viewer with an obnoxious plethora of sources including docs shipped for every minor version of a program, docs for operating systems, man pages, info pages, maybe even wiki content for exceptional wikis like arch and gentoo.
But then I see similar things in supposedly mature and even-more sophisticated systems, like mypy's typeshed which only supports a single version of external libraries' type declarations.
How? What madness leads to this? Why not support multiple versions, and offer a way to select them per project from standard dependency declarations, so you're always reading the correct version?
Give me local HTML files I can stash in my filesystem. I actually just use wget to recursively archive entire documentation sites to local folders and serve them up with python's built in web browser. It's the only way to be sure I have accurate and up to date offline docs.
Apparently devdocs does have an API to download docsets. I just installed the Emacs package that someone recommended in another thread and it let me download the docs.
Since the devdocs representation is so standardized, I have wondered if I could dump their database into SQLite and browse it with datasette. Should even be able to maintain text searching.
Is the Zeal code open source enough that one could change the backend by replacing a small number of data access subroutines?
I think all you would need to change is setter code, since getter code wouldn’t be part of the interface. I think Zeal doesn’t write back any data, right ?
With Chrome based browsers this seems to happen usually on browser restarts after version upgrades, however With Firefox I have never had such issue
There seems to be an Electron Desktop client: https://github.com/gengjiawen/electron-devdocs
But yeah, it took me a while to get into the habit as well, and the benefit was pretty small. It mainly just feels nice.
A more limited and focused selection of documentation gets me exactly what I need. It's also a lot faster then documentation websites.
I stop and think about the issue instead of just googling for an answer.
Also, I removed the wifi card from my laptop so I can work from a room without ethernet letting myself get distracted by the internet.
Also, even with high speed internet, it is several seconds at least, while zeal/dash will return it basically instantly.
When looking at the offline documentation, I know that I am looking at a supported version (not something ancient or much newer than what is deployed in production) and that I am looking at the "authorative" answer i.e. the "real" docs not some third party comments.
When the program I am developing is expected to run correctly even in the presence of errors, it makes a lot of sense to me to consult the authorative documentation rather than "the web" which rarely covers all of the possible corner cases.
There has been controversy in the past about the tool since it is a glorified man page reader. The author even shared at one point his earnings and what he is doing with it.
And no there is no zeal for macOS. I don’t know the details behind that deal. I can only say that zeal is not as good as dash. The integration into macOS is way smoother than what one gets on windows and Linux. I tried all versions.
You don’t need to build it yourself, there is a brew formula.
I’ve even paid for Dash to get that feature, but no longer use it due to some UI changes in the latest version that add extra clicks for each search query, making the UI inefficient.
Zeal seems to have be inspired by the old and efficient Dash UI, but I can’t have both that and the Apple docs from what I can tell.
See https://news.ycombinator.com/item?id=25434191 for prior discussion about my experience.
I would appreciate it when Devhelp (Gtk) allows the user to install further docs. The requirement to place docs somewhere in “/usr/share” is obvious but doesn’t fit the user needs.
Also, http://devdocs.io, which implements the same functionality and supports offline browsing as well.
I'd be happy to hear of others, but the situation for generating docs is pretty dire right now (as far as I can tell).
When you're starting with Doxygen documentation: https://github.com/chinmaygarde/doxygen2docset or https://pypi.org/project/doxytag2zealdb. If it's Sphinx-like, then https://github.com/hynek/doc2dash
Otherwise is it probably best to look for a specific tool for the type of docs and then look through the GitHub submissions to the user-generated docset submissions for clues for specific code bases: https://github.com/Kapeli/Dash-User-Contributions/pulls?q=is...
2. Unzip & run
3. Install java 19 doc
4. Search for "List" on top-left search box
5. Wait 1 second
6. Zeal crashes
7. Try navigating, it crashes
I haven't had such a bad first experience in years.
For the remainder of documentation, I found HTML to be the “best” format and thus view them from the Web Browser even when using offline copies. To make them accessible, I use my browsers home page - a reduced version is shown here: https://masysma.net/32/ial.xhtml - and in the most recent version it supports some rudimentary movements like hjkl...
Offline docs still used
Death will take care of that soon
LLMs, the new way