I started building a while ago a personal knowledge base (kb) with similiar requirements and concerns as yours.
After considering a lot of different choices, finally settled with a mediawiki installation and haven't regretted since.
I'll fundament my choice considering your requirements.
future-proof
In my point of view, building and practical, future-proof, electronic knowledge base means the choice of:
- open format, with easy conversion to other formats
- software that is auditable and that gives some guarantees that is can be maintained
- considerable user base, which promotes it's expansion
For me a proprietary software doesn't provide the assurances I want. Companies go south, formats change, and data portability is not always a concern. Mediawiki is written in PHP and uses a RDBMS (mainly MySQL or PostgreSQL) to store it's data. The uploaded files are stored on disk. It needs a web server and not much else. This requirements are easily met in any of the major operating systems and IMHO the closest to standard software and formats we can get.
I choose mediawiki because I judge it as a mature software package. It powers wikipedia which gives it an enormous user base, is actively maintained, thoroughly documented and has lots of extensions. I think it is reasonable to presume that, as long as wikipedia exists,it will be maintained and developed. If they ever change platform, it's more than sure that there will be a migration path. If wikipedia ends, or the database used (MySQL, PostgreSQL) is discontinued, there will be plenty of time (and interested parties) to migrate to another platform. As a last ditch, the database could be exported to CSV and the data imported somehow to another system. Too far fetched to practicaly consider. I think that no proprietary system can give this kinds of guarantees, and that's why this was my choice.
Being future-proof also means resistance to hardware failures, natural (or man-made) disasters, tampering, etc. Tools that synchronize to the cloud have it a little easier. With a setup like this, the future-proofness encompasses a backup plan, which in any case should already be an existing practice if you plan to devote a lot of work in building a knowledge base. Backing up a mediawiki installation is as simple as making a dump of the database and backing up the mediawiki root directory (which also contains the uploaded artifacts). After this it can be compressed and/or encrypted for size reduction and security, transfered by a network to a remote location, copied to a portable media for offsite archiving, etc. Define and automate a procedure like this, and you won't risk loosing your information.
Any stricter requirements of future-proofness would require considering an text-only representation (which btw can more or less be obtained from the database) or a copy on paper, which continues to be the most realiable knowledge medium, but I guess this scenarios are more or less out of scope for their limitations and impracticality.
big database suited
Since the datastore is a RDBMS (MySQL, PostgreSQL and partial Oracle and Sqlite support), the database can grow pretty large and still be accessed/updated quite efficiently. The Semantic Mediawiki extension discussed below only supports (at least when I installed it) MySQL and PostgreSQL.
hypertext links
Core wiki functionality
mobile access
Assuming you have network access from your mobile device (in contrast with running the software in the device), the data is accessible from anywhere. AFAIK, the wikipedia pages render nicely on all browsers, mobile included.
tagging
I've been using the wonderful Semantic Mediawiki (SMW) extension. This extension enpowers the mediawiki software with semantic web features, enabling the definition of semantic content. This allows the creation of dynamic content (pages or page fragments) using the SMW semantic query language and allows the kb to became a data source that can be consumed by other systems.
As a very trivial example, I use the wiki to keep my food recipes. Since I annotate semantically the recipes, I can create dynamic pages that list all the recipes with ingredient X, or all the recipes which are desserts, etc.
Another thing I use it for is to enrich my vocabulary. I regularly pick up new words from the dictionary and try to introduce them into my day-to-day conversation. Everytime a new word is chosen, I create a page in the kb and annotate it semantically (verb, adverb, etc... masculine, feminine), which allows me to produce the previously mentioned list pages. I also create other annotations, like relating two homophone words, etc. Since I like to learn new languages, the next step will be, at least in this vocabulary aspect, to expand my mediawiki so that when I learn a new word in my native language, I can look it in the other languages that I speak, create pages for them, and associate them semantically, more or less like the wikipedia does for the articles in different languages. I don't know yet the best way to implement this. I also have a limited knowledge of the SMW. As I learn more, I'll try to expand my kb with the facilities it provides.
Hope this information can be useful. For me this is still a work in progress and I intend to expand on this as I learn new approaches.