Some basic requirements are:
- code snippets
I know of a few tools and I've even worked at companies that use git repos with markdown. I'd love to hear everyone's thoughts.
It's not bad. It's not great either. Which is pretty much the best way to describe all Atlassian products. It's unbearable on slow or spotty internet connections. It's riddled with bugs (just the other day my spacebar literally stopped working in their edit view). The formatting gets in your way more than markdown, but at least not as much as something like OneNote.
But, it's powerful. Like any Atlassian product, you can script it to do basically whatever you want. You can organize your company workspaces however you'd like. You can set up tables which can automatically pull summary lines of any other page labeled with a specific label, which is great for automatically building indexes or tables of content.
Overall, I haven't found anything better, and I write a lot of technical documentation for our company.
For comparison's sake:
- Github/Gitlab wikis are pretty bad. There's almost no advantage to using them over just storing markdown in the repository.
- Which, we did for a while, and it works fine, but in its simplicity it misses some of the key features that I do like about Confluence (like those automated index pages and page comments).
- We also used Dropbox Paper for a while; I really like it, but its primarily useful for, let's call them "transactional" documentation (write, get feedback, never look at again); It's not very good at being a Wiki, storing long-term long-form information. And given that Confluence can handle both pretty well, there's not a great argument for adopting a new service from an entirely different company we don't otherwise use.
- We have G-Suite and thus Drive/Docs. The inability to easily write technical documentation with inline/block code makes it a non-starter. No thanks. If Drive added a markdown editor like Dropbox Paper I'd probably push to switch; the search is pretty great, its a platform we already have, and you get a full, amazing document editor for those documents where it makes sense.
- I've never used Quip in a real work setting.
However, I've had a different experience to this one:
> You can organize your company workspaces however you'd like.
...unless you want to, say, include two subsubsubpages with the same title in the same space. You want a space per project? You want to put documentation for multiple major versions into Confluence? Atlassian tells you "Nope".
Which is my main gripe with Atlassian about now. There's a pretty old ticket on the titles thing, with loads of comments asking to change this. It was simply ignored.
With Jira, there was the same thing: The release management part has some limitations, someone opened a ticket, hundreds of customers agreed, Atlassian closed it. And allthough their final comment starts with "we listen to and value your feedback", it states that no, this won't be solved. Ever.
Edit: Oh, and don't get me started on their search.
Feel free to contact me directly. moura @ the domain in my profile
I would absolutely never rely on the permissions in Confluence to store anything sensitive in it ever again.
When you take into consideration price AND maturity AND feature set it's honestly hard to beat. I tried lots of open source Wikis and all of them lack significant amounts of polish and/or features. Confluence at least resembles a mature solution that mostly covers all the bases. And if you're a small (very small) business or just doing a personal/family Wiki, $10 per year for all that can't be beat.
I cannot recommend notion enough!
Compared to the main competitor mentioned here - Confluence - it is blazing fast.
Despite those issues, I have fully switched over to Notion. Instead of trying to force some very specific workflow onto you, it just offers a great toolkit that you can use to manage your own work whichever way you like it.
I would prefer a native app over a web app, but I guess that's just the world that we live in today.
I then use GitBook to publish it on the web and have fancy features like search and contents table on the side.
Been using this approach for over a year now and I love how seamless the workflow of updating files in Sublime Text, pushing it to GitHub and seeing it live is. At this point my entire knowledge base lives online and is referencible and I love it.
The way I approach updating the wiki is in the wiki too:
It's billed as a Project Management software (and it's great at that) but it can be great for documentation because it:
- provides hierarchical nesting (Milestones / Epics / Stories)
- each object can have a relationship to another (related, blocks, duplicates)
- each object offers a markdown text area, lists, github PR links/integration, comments, and can be moved between various stages (standard scrum stages or your own custom ones)
- each object can be assigned multiple owners, requesters, and followers
- each object can be tagged
- search by title, tag, owner, state, etc.
- each object can have files uploaded and attached
This allows me to track why the work was done, how the work was done, and what work was done, while providing a nice README as a comment.
Everything can be edited, or others in the team can leave their own comments.
It's odd for sure, but I love it.
The downside is that to get it running with a good set of extensions that optimizes it for enterprise use takes a bit of an effort.
The upside is that once you do, it becomes an incredibly powerful tool that most users adopt without complaint. It hits all the OPs requests for searchable, code snippets (with syntax highlighting), and hyperlinking. When you add the ability to store and reuse structured data (Cargo or Semantic MediaWiki) it really becomes powerful.
Others I've tried:
- SharePoint (this is so bad it pains me to mention it)
- Confluence (not bad, but lacks structured data and seems to be focused on serving smaller teams vs. an entire company)
- OneNote (great for personal use, not as great for teams, especially not great at tracking multi-user changes)
- EverNote (great for personal use, not as great for teams, especially not great at tracking multi-user changes)
- Salesforce Knowledge (Didn't get too deep, but seemed better for help desk answer queue than internal documentation)
I think another requirement to add is diagramming. I think wiki-style diagramming would be a big help for programmers to better communicate ideas.
I've used external tools like draw.io but the overhead for editing, downloading, and uploading I feel gets in the way. Sadly, we are on confluence but don't use the draw.io plugin . Built-in support for dot, uml, or even ascii diagrams  would be big help.
 e.g. https://github.com/ivanceras/svgbob
Would probably work nice as a plugin for a wiki.
I would like to see Mermaid be able to group sibling nodes though, once I can do that, I can autocreate really nice organizational charts :)
Generated doc tools like Javadoc/Yard are usually terrible and only good for very specific documentation use cases. If that's all a codebase has, it's a middle finger to developers.
The main point that confluence does really poorly (for me) is the lack of an external editor and the absolutely shameful support for Markdown.
If I could edit the page with git like interface and an external editor (like you can do on Github), it would be absolutely amazing and would make it a killer product for us.
Moving to another solution without deep integration to confluence/Jira is not possible since those are being used by product as well.
'Watching' a document is a very important feature which is required in documentation tools. API specs change all the time and developers depending on an evolving API need to check the document on a frequent basis which can be a timesink.
Confluence is also a brilliant tool which supports watching and all the other features listed above, though it can be a bit pricey.
It's a minimalist wiki with markdown support and real-time collaboration features. A lot faster and more lightweight than most of the old school wikis e.g. Confluence, MediaWiki, SharePoint (ugh).
Also has a kanban board view for sprint planning.
And to make it pretty we use mkdocs material - https://squidfunk.github.io/mkdocs-material/
There's a lot of great extensions that offer more functionality and features too - https://squidfunk.github.io/mkdocs-material/extensions/admon...
There's also extensions not listed in here that you can Google if looking for something specific
We have tickets, git, a wiki, and an agile board there. The integration let us do commits like:
Added feature X from ticket #33, updated doc at [wikipage]
Its not perfect (Boostnote really only supports local files) but it does mean our shared body of knowledge is versioned to what is in our repos. If someone makes large changes they can work on documentation while they are developing the change knowing that their docs are only released when their change is merged.
If Boostnote was aware of this workflow or allowed editing directly to remote repos it would be pretty much perfect.
(1) MediaWiki is definitely more responsive (Confluence can be quite slow) and, importantly, considerably more expressive -- provide you can learn Markdown, which basically anyone can.
(2) But you're essentially stuck with email-based logins which can be a dealbreaker to some organizations (MW does support OAuth in theory, but only in theory it seems -- the setup seems to be basically not supported).
I also found scaling MW harder than Confluence, as unintuitive as that sounds. Same goes for troubleshooting speed problems.
That being said, there is room for improvement. Image handling is not great, and a lot of the components feel simplistic and could be fleshed out (permissions, indexing/search). Dead simple to set up though, especially with Docker-compose.
We are currently evaluating tools for this with much of the same requirements.
My current idea for this is to use Hugo with https://themes.gohugo.io/hugo-theme-learn/ as the theme. It has search, code snippets and such. Does anyone have experience with doing it this way?
We've tried to use MediaWiki and other fancy solutions (inc. O365's SharePoint/online OneNote) and desktop OneNote is the only one that stuck. We have .one files for each major topic with sections and pages within them. It is kind of a "low tech" solution, and maybe that is why it works. It gets out of the way, easy to backup, no downtime, etc.
Although Microsoft keeps threatening to discontinue the desktop version of OneNote.
You can synchronize with Simplenote — https://simplenote.com/ — which has a mobile version so your notes are viewable on your phone.
You can also use double brackets for wiki functionality to automatically create a link to another page of the same name. For example, [[this]] would create a link to a page called ’this’.
Another option that is good for many people working together is Gollum, a wiki system built on top of Git. It is the basis for GitHub’s wiki pages, if I remember correctly: https://github.com/gollum/gollum
Using XWiki the following documentation architecture is attainable:
These days, I use a Git<->Markdown based hosting. I also wrote a small Flask script to serve contents from the repo. This makes it Heroku-able.
BOOKSTACK - https://www.bookstackapp.com/
Preferred tool for work:
Google Drive / Text Writer and Spreadsheets
We just start to using it for the same use case you mention. And so far the best solution out there.
Github markdown files for short project specific docs.
And Confluence for everything else including a few technical guidelines.
We're toying with Notion at the moment, but we'll see if we can get critical mass behind it.
We are tech company, everyone can learn to use Markdown and Git.