iPad application
Edit: The application is now available in App Store
http://itunes.apple.com/us/app/zotpad/id497260579?ls=1&mt=8
I started a project for a Zotero iPad application. I named the project 'ZotPad' for now.
The Xcode 4.2 project is available at https://github.com/mronkko/ZotPad
A screenshot of the app in action is available here
I am looking for developers to join the project. If you are interested, please join the discussion at zotero-dev list. The source code is available under an open source license and I plan to release this as a free app in the App Store when it is ready. However, if someone who joins the project would prefer it to be a paid app, that would be ok for me as well.
At this point I plan to focus ZotPad on reading and annotating PDFs. It will sync with Zotero server and download files from there and upload modified files, but other than that it is read only. Item viewing will be done either with built-in quicklook viewer or external software such as iAnnotate or GoodReader.
The software will be available for testing when it is ready. When this will be depends on the amount of people joining the project.
http://itunes.apple.com/us/app/zotpad/id497260579?ls=1&mt=8
I started a project for a Zotero iPad application. I named the project 'ZotPad' for now.
The Xcode 4.2 project is available at https://github.com/mronkko/ZotPad
A screenshot of the app in action is available here
I am looking for developers to join the project. If you are interested, please join the discussion at zotero-dev list. The source code is available under an open source license and I plan to release this as a free app in the App Store when it is ready. However, if someone who joins the project would prefer it to be a paid app, that would be ok for me as well.
At this point I plan to focus ZotPad on reading and annotating PDFs. It will sync with Zotero server and download files from there and upload modified files, but other than that it is read only. Item viewing will be done either with built-in quicklook viewer or external software such as iAnnotate or GoodReader.
The software will be available for testing when it is ready. When this will be depends on the amount of people joining the project.
This discussion has been closed.
I plan this to be a PDF reading and annotation tool, which will sync with the Zotero server. All libraries will be read only (no adding or editing of items, collections, etc) except for modifying already existing PDFs. I do not plan to support tags at all and saved searches are not planned for the 1.0 version. The source code is available under an open source license and I plan to release this as a free app in the App Store when it is ready. However, if someone who joins the project would prefer it to be a paid app, that would be ok for me as well.
The following features have been implemented:
-The App comes with a very small built-in demo database. This can be replaced with a real Zotero database using iTunes file transfer.
-Browsing library and collections tree (shown on the left in the image)
-Showing items and thumbnails of PDFs for the selected collection
What has not been implemented:
-Sync with Zotero server
-Search and Sort
-Clicking an item to view the PDF
-Better formatting of items in the list (a CSL parser for Objective C would be great)
Also the code needs to be optimized a lot further than what is currently is.
Hopefully some others can help out in the meantime, and good luck bringing out the first release. You may also want to keep an iPhone interface on the roadmap, since this would be quite useful for the many iPhone users as well.
The first release will not support annotating because Zotero does not yet support uploading files from third-party applications. The features are roughly the same as in Zandy.
The long term plan is to allow two different workflows for annotating
1) "Send" documents from ZotPad to iAnnotate or any other software that is capable of receiving PDF files and then "sending" these back to ZotPad
2) Annotating directly within ZotPad
If ZotPad is in offline mode, the annotations will be stored and synced to the server the next time network connection is available. But all this depends on Zotero implementing file uploads from third party apps.
The app now has most of the "difficult" parts implemented now, but needs a few optimizations here and there. What needs to be implemented still is downloading attachments files from the server, but this is straightforward.
I have now another developer, who has joined (or at least planning to join) the project. He is one of my coworkers at Aalto University. We plan to release this as a paid app that is priced at the same leve as Zandy for Android, which is 3€/4$
In the future we might release a premium version with built-in annotation capabilities using the commercial iAnnotate library (http://www.ajidev.com/iannotate/developers.html) Since we need to pay a license fee, what ever cost that will incur for us will be added to the price of the app for the premium version.
If someone is interested in working with us, we are happy to share what ever revenue this might generate. Also, if you have an apple developer license, you can check out the code at any time at github and install it on your iPad.
The first version most likely will not support iPhone so that we can get it out as soon as we are satisfied how it works on the iPad and can concentrate on the iPhone version after that.
One of the most widely used PDF readers and annotators on iPad is Goodreader, which has excellent i/o support across iPad apps. Making ZotPad interface with that might obviate the need to include the commercial iAnnotate library and might be a way to quickly get wide adoption from existing Goodreader users.
ZotPad will send PDF documents to any application that can receive PDF files. (It would be more difficult to try to restrict this to a particular application than include all.) So GoodReader will be supported.
The iAnnotate library is a future idea, which I think that some users find useful because it reduces the number of steps needed when doing annotations.
How this will work is that ZotPad will register itself as a receiver for PDF files (and later maybe other files) and you can send files from GoodReader to ZotPad the same way that you send them from ZotPad to GoodReader. Then ZotPad will use the filename to detect which item the file belongs to, and will replace the existing file in cache and upload the new version to Zotero server.
But this depends on when Zotero implements third party uploads, which should be soon. Also there are some plans to make ZotPad and Zandy to sync with Zotero on a local computer without using Zotero servers.
http://sblsrv.org.aalto.fi/zotpad/
(I was a bit constrained with time, so sorry for the typos.)
The release of ZotPad now depends on the following things:
-Fixing one small performance issue
-Fixing a bug about device orientation
-Finalizing cache preferences
-Possibly waiting for a new version of Zotero server API (see here)
-Setting up a support site
And of course the Apple's app approval process.
In the dev thread it is pointed out that downloading the whole library or downloading on demand are not the only options. But no good example is given of a possible middle ground solution. Here is one. Call it the podcast model.
Allow the user to designate one or more collections (possibly with subcollections) as the "ZotPad Reading" collection. Call this subscribing to collections. Automatically download everything contained in the subscriptions to the device. Don't have me download the whole library to my device if I don't need to.
This would fit the use case of (offline) travelling very well. Items to read would be like podcasts to listen, auto-updating based on collection subscriptions. Indeed, taking the podcast metaphor further, it would be great if ZotPad would remember (1) my position in a file and (2) my reading history.
In the dev thread Dan worries about the amount of API calls needed to replicate a whole library offline. But from the perspective of the user, too, there are good reasons to allow users to download only a selection. My library is over 20Gb and I think many libraries may be like that. I don't need to have all my 6000+ items on my iPad. If I travel for a few days I know roughly what I want to read. The podcast model (readcast? zotcast?) allows me to download selected collections to my device — ten to a couple hundred items maybe — and helps me to get my reading done. Users would love it.
-Nothing is cached if the user uses the mode "Online, without cache"
-All items that are shown on the screen as a part of an item list are cached
-All attachments that are shown in reader mode are cached
-Preemptive cache will additionally cache items and attachments as described in the cache rules here http://sblsrv.org.aalto.fi/zotpad/
-If cache becomes full, the oldest attachment that has never been viewed is deleted
-If there are no attachments that have not been viewed, the item with the most time since last viewed are deleted
I often find myself wanting to make one folder and just one folder available offline; the Dropbox app, and your syncing rules, do not seem to allow for that. (Unless one predownloads the entire library which is huge in my case.) Not to press the point, but it does seem to me that a podcast-type implementation, i.e. a subscription to certain collections, would be a transparent, useful and very popular option.
Anyway, again, great job, it looks delicious and I am sure many people will want to use this. Would love to hear your comments on my questions.
The initial focus is on PDF reading, because this is what I will be using ZotPad myself.
I searched the code and noticed a TODO relating to webdav. What's the plan? I might be interested in helping out but I am new to objective c and ios development so it might be slow work. :)
Since you have the version compiled and running, you can be of help. The main reason that I have not implemented support for webdav is that I do not have access to a webdav server. If you can do a couple of test runs for me with your setup and email the logs, that would be helpful. Please email me at zotpad@gmail.com, and I will explain the details.