Hi Christian,
zimlib has already a own iostream implementation so there is no limitation there. But I see the problem with file systems, which may limit the file size.
I am willing to implement whatever solution we prefer. Larger changes in zimlib is not an issue, which should affect our decision. I want to have the best possible solution - not the easies to implement.
The old zeno implementation as well as early implementations of zimlib had a feature to support multiple files. Instead of opening a single zim (or zeno) file it was able to open all zim files in one directory.
The last german wikipedia DVD had separate files for text and images as well as a separate DVDs for images with higher resolution. Just by copying the files into one directory it was possible to access all content from all zeno files.
I removed the feature for better portability. There is no standard feature to read all files in one directory.
Your suggestions 2 and 3 imply, that the creator of the zim file needs to address the problem. He has to split the content. Of course the zimwriter can help by automatically split the file. But handling zim files will get more difficult. The user has to know, which files belong together and if he downloads zim files, he has to download multiple files. It implies, that we must extend the specification to limit the file size to 2G. I don't like that. I don't want to limit it per spec.
The solution 1 has really the advantage, that the user can download a single zim file and split himself when needed. There is even a unix/linux-tool to split files into pieces named split (isn't it nice how intuitive unix really is ;-) ).
It is quite easy to extend the iostream to support multiple files, so that it internally join the files into one zim file. We just have to think about the interface, how to tell zimlib which files to join.
As you suggested a naming convention is one possible solution. We may even use the schema from split. So if you split foo.zim into parts, the parts are named foo.zimaa, foo.zimab, foo.zimac and so on. If you tell zimlib to open file foo.zim and it is not found, it looks for the parts until it do not find any more.
The user can split the files as needed and join then back using cat. Very easy.
Tommi