Zotable: a modern Zotero client for Android

Hey everyone! I've just published Zotable, my new Zotero client for Android, to the Google Play Store. It is based on Zandy but with a few new features and a seriously overhauled interface that implements Google's Material Design principles, including a floating action button (like in Evernote, Gmail, Google Keep, etc) to quickly add items via barcode scan, ISBN lookup, or PDF upload.

It is available for $2 on the Play Store (https://play.google.com/store/apps/details?id=com.mattrobertson.zotable.app) but is free software under GNU Affero license. The full source code is available for download and can be used to build the app for free in Android Studio (https://goo.gl/yCIB7H).

Check it out and let me know what you think!
  • I'm very happy to see so much movement on the android platform. This looks nice and I'll go ahead and buy it.
    A couple of questions (these aren't just for me--I consult on Zotero occasionally and these are questions that e.g. academic librarians recommending products to their patrons will be interested in):
    1. How are you planning on providing support for this?
    2. How committed are you to this in terms of the amount of time/how long you'll maintain this? Obviously you can't promise, but anything you could say about that would be helpful.
    3. Any new features still planned?
    4. In particular -- what about groups? And is there an easy way to annotate PDFs and re-upload them (e.g. the way that works in ZotPad)? Or is there one planned?
  • Any plans to host this on some versioning platform (e.g. GitHub) for easier patch submissions, issue tracking, etc.?
  • @Adam Thanks for the support! I am not a professional developer and have developed this by myself in my spare time. I am certainly committed to the maintenance and growth of the project simply from a desire to provide a great product. But I can't make any promises regarding response time other than I will handle issues as soon as time allows. I am a full-time Master's student, so this may fluctuate depending on my program load. To answer your second 2 questions, I do intend to add a few features - namely, adding collections from the app (not available in Zandy, the base for my project) and improved auto-grabbing of metadata from PDF uploads. I wanted to make sure there was at least some interest in the app before dedicating more time to it in initial development. I have not looked into PDF annotation at all, but it is definitely a potential feature. I will certainly research it and implement if possible.

    @aurimas I'll look into it. I've developed a few apps before but have never hosted any on a versioning platform, so this would be new territory for me.
  • can only 2nd aurimas in encouraging you to put this up on github. The fact that yours is the only open Android app (I believe) is going to make it attractive for people to contribute to.

    As for annotations -- to be clear, I'm not asking you to add PDF annotations as a feature (that'd be a rather major undertaking) but rather to think of a convenient way to send an attached PDF to an installed PDF annotator and then re-upload the existing file. Here's a description of how ZotPad does this:
    From what I understand, reading&annotating is one of the biggest uses for tablets, so this would be very, very helpful.
  • edited August 19, 2015
    The fact that yours is the only open Android app
    Well, besides Zandy, but yes.

    (the following is more of a general observation than anything specifically about your work, and some of it is not applicable to you at all)

    I'm not sure how many changes went into this new app, but I rather wish that more people contributed patches to existing projects than forking them into new ones (I don't know whether you tried or not and maybe this is a good move. I'm just saying it in general). More projects means fewer contributors per project making things move slower. Of course, sometimes this is not possible when views on project development diverge between developers (e.g. OOo and LO)

    The situation is a bit more sticky given that the app is put up for sale on the Play store. I'm not saying you shouldn't do it (there are plenty of expenses involved in app development), I just think it discourages volunteer contributions if the contributors feel that you're benefiting financially from their work. Maybe being open about financial gains/losses would create a better environment for contributions (again, not saying you need to do this, I'm just observing).

    In any case, I think version tracking (even if not hosted online) is a must these days, even if you're not going to collaborate with others. Hosting the project online with a decent issue tracker, patch pipeline, maybe even automated testing integration goes a long long long way too. I'd highly encourage you to invest the time into adopting one of these platforms (not necessarily GitHub, though I think it's quite good).
  • Any possibility of getting a .APK that could be loaded onto a Kindle Fire? I'd love to try this app, but thanks to the clash of the titans (Google and Amazon), I can't get anything directly from Google Play.

    I'd second the suggestion about GitHub/repositories.

    Likewise adamsmith's comments on annotations. I've started using Zotfile to allow me to annotate PDFs on my Kindle, then bring them back to Zotero and extract the annotations.
  • I'm interested in this.

    I've been very frustrated with Zandy.
    I echo concerns above about having a sustainable ecosystem for a Android Zotero app.
  • I wish that I could use Zotable to select various tags and have that narrow the search results in Dropbox or a file manager... There ought to be a tag-cloud related to files as metadata service or something... so one app can be used to help another app select a set of files, in sort of a generic way.

    Maybe we should tell this idea to the Cyanogenmod guys?
  • First, @mattrobertson333, let me say it is really great to see a Zotero client for Android that has a lot of potential.

    But in the discussion above why is no-one mentioning Zed by Daniel Favand (@dpfavand http://www.favand.net/zed)? It has been the best Android client until Zotable, and even now I would say they each have their advantages.

    Daniel acknowledged back in July that development of Zed had stalled but he was planning to pick it up again soon.

    Either way, Android is badly served for Zotero support and I really welcome all developments in this area. I'm quite prepared to pay if it guarantees continued development and support. (I've just purchased Zotable.)

    I also strongly endorse the call for good integration with annotation services. This is probably not the correct place to say this but if anyone can integrate Zotero and Diigo my research life would be so much richer!
  • I downloaded and tried Zed. The information available for each item was pretty basic, but it looked promising.

    After I added a bunch of items to my Zotero library, though, Zed hung up on the sync. No matter how long I waited, it never completed. I restarted Zed several times, and restarted my Kindle, but I could never get the sync to complete. I could access items in the library (expect that the sync notification covered up the attachment field so I can't open any attachments.

    It's clearly doing something, because when I tried it again today, I could see entries I had just created on Standalone. Unfortunately, it's not terribly usable in the current state.

    Then, I too noticed that the developer (Daniel) no longer seemed to be working on it, so it didn't seem worth pursuing further. But if he is planning to continue, that's good news.

    As for Zotable, I'd love to try it if (as above) I could get an APK so that I can load it onto my Kindle. That's actually how (and why) I tried Zed.
  • edited September 11, 2015
    I just tried it and it didn't do what I really want, sharing web content from Firefox mobile to Zotero. Zotable has an entry in Android's share list (so far so good), but when I share a webpage it only opens Zotable without doing anything.
  • edited September 12, 2015
    I tried Zotable but it crashed immediately after start before doing anything at all. Fortunately I got the payment reimbursed as I uninstalled immediately.

    It is good that there is some development interest in an Android client, this is really needed. But like others before I would suggest that you try to get in touch with the other developers and see if you can work on one client together. At the moment there are at least 3 apps (Zandy, Zed and Zotable) but none of them really works properly and reliably.
  • Yeah, unfortunately just working together is harder and more time consuming than you may realize. People only half joke when they say that adding a developer to a project slows development down by 20%.

    Zandy isn't actively developed anymore, so forking it was imo a pretty reasonable step for someone who wanted to build on it. Zed takes a completely different development approach (the html5/js/css based ionic framework as opposed to Zandy/Zotable which are written in Java). Also Daniel hasn't open sourced Zed, so it'd currently be impossible for people to jump on that to help (that's the reason I didn't mention it above).

    It's because genuine collaboration is so hard that I'm pushing for code to be made open and easily available via github the way Avram did with the original Zandy app, which made its significant code base--in particular a java API library -- usable even after he stopped putting much work into it.
  • Another way is to add synchronisation to an existing reference manager like Erathosthenes. The developer plans to support synchronisation with Zotero ("Planned for version 0.8" although that's well behind schedule: https://bitbucket.org/mkmatlock/eratosthenes/wiki/Changelog), and it's in active development, with regular updates, so there is hope.

    I found Erathosthenes a very good reference manager on Android, and already use it for reading. As Erathosthenes is based on bibtex, it's easy enough to setup an automatic one-way sync from Zotero to Erathosthenes:

    • Export a bibtex file from Zotero with Better BibTeX (use "keep updated" to update the bibtex automatically
    • (Optional if you want to read attachments) Run the bibtex file through a simple sed script that changes the path to the attachment storage directory in the "file" fields in the bibtex file, to the appropriate directory on Android.
    • Synchronise the bibtex file (and the Zotero storage directory, if you want attachments) to Android via dropbox or owncloud or other syn methods.
    • Import the bibtex file into Erathosthenes (this has to be done manually...).
    This is a bit fiddly, easy enough for technically-minded users but not feasible for non-technical users.

    It's only one-way so modifications on Androids don't get into Zotero, but as I'm mainly interested in reading on the Tablet, it's ok.
  • I am pushing Zotero.org on my co-workers wherever I can. The only downside: there is no decent Android client that gives me access to my SHARED libraries from a tablet. (My main library works, the shared libraries are the problem.) I would even pay for the client!
    The one thing that Android does not have is a decent Zotero client.
  • Hello, Matt – I just bought Zotable and have run into some problems. Is there another place I should ask about it?

    In short:
    Zotable gathered all the info from my Zotero library (slowly but surely)BUT it does not sync.

    If fact; I scanned a book with Zotable, it never turned up in Zotero, and magically vanished from Zotable after a little bit.

    I have added some things to my (online and standalone) Zotero, and they do not turn up in Zotable
    I have created some notes in Zotable, and they do not turn up in Zotero.

    I have checked all the settings and compared with Zotero settings and it all seems in order (user ID, API key).

    So.. it _gathered_ the Zotero library and structure, but now it seems static: it is not getting the new stuff from Zotero, nor is it uploading to sync.

    I appreciate any help; I am on a mission to gather and study library and book relations.. My primary goal for this is not the mobile access per se, but rather the scan function directly to Zotero: this is gold for my enquiries.
  • Do you all have WebDAV access? When I tap any attachment nothing goes on (using webdav.4shared)!

    It is very frustrating that we don’t have a good android app yet. I would surely pay for such software as I did for Zandy. However, Zandy also has problems opening some of my attachments, but at least it works in 70% of cases :)
  • Hello @mattrobertson333 - I am still having the same problems as outlined above. I am willing to help getting this to work from a user perspective. I tried e-mailing you and posting here. Is there anywhere else I should rather use for communication about this? I sorely want to see this work, and though the price is of course not important, I feel that there must at least be some communication. I am willing to fork out a bit more for something that works, but as it is now, it is a dead application.
  • The Zotero web platform is actually pretty good - ie, type zotero.org into any web browser, including android ones, and sign in to your library. There is also a bookmarklet that can be used in android browsers to save references. That does about 80% of what I need (I'm a pretty heavy used). It's a little slow in loading collections, and it doesn't sync attachments automatically (you have to download and re-upload). But it works fine for the road.
  • edited November 25, 2015
    A few additions to smatthie's comments.

    I use Erathostenes basically as he/she suggests (see details in https://github.com/rdiaz02/Adios_Mendeley#using-a-tablet, where I also have some scripts for automating all the steps).

    I do like that with Erathostenes it is me who decides how and what to sync; in particular, using Syncthing (https://syncthing.net), I keep in sync the PDFs so PDF annotations are always synced between tablets and computers (and this is two-way). (I also use Syncthing to send the BibTeX file to the tablets whenever there is a change in the computers).

    This way of dealing with the PDFs is something that I find much, much nicer than any WebDAV scheme. For instance, I never have to worry about realizing, while off-line that, ooooops, I forgot to download a particular PDF when I still was online. I carry my complete, updated, synced, PDF collection on my tablets.

    Moreover, Erathostenes is able to (partially) use JabRef's groups and, thus, Zotero's collections.

    So up to here almost perfect. (I cannot modify the Zotero entries themselves, but I can live with that since I use the tablets mainly for reading PDFs).

    The catch? Erathostenes is painfully slow loading/reloading my > 3000 references bibtex file. On an Asus TF201 it can take over 10 minutes to load the db and over 30 to deal with the JabRef groups; a Nexus 7 can do it in between 10 and 20' total. Changes in Zotero, thus, are painful to update in the tablets. Moreover, Erathostenes will often just hang, and you need to kill it and restart it.

    I have tried Zotable (and Zed, and Zed Lite, and Zandy), but the way PDFs are dealt with is a complete showstopper for me. So I continue using Erathostenes.

    An alternative approach that I want to try is using Referey (https://play.google.com/store/apps/details?id=com.kmk.Referey). Referey is an old Android app for Mendeley that works just great (you sync the db and the PDFs as you see fit, and it works from there, including searching, sorting by several criteria, and using the Mendeley equivalent of collections, with multiple levels of nesting). What I'd need to do is prepare a script that would take the key pieces from the Zotero db and create a minimal fake Mendeley db that Referey can then work with. But I haven't had a chance to devote any time to this. No, I do not want to use Mendeley to do this Zotero-to-Mendeley sqlite structure conversion, even if Mendeley is supposed to import Zotero dbs, for at least two reasons: I no longer keep (nor want to keep) Mendeley in my machines, and after six years it seems that Mendeley is still unable to deal properly with Zotero's collections (http://feedback.mendeley.com/forums/4941-general/suggestions/389900-allow-importing-nested-hierarchical-zotero-collect). I suspect the direct Zotero-to-Mendeley mapping of the key pieces of the sqlite dbs so that Referey works should be doable.

    (Modifying Referey to have it deal with Zotero's sqlite db might be an option, but I have not been able to locate a copy of the source code ---I've asked the author, without success so far---, nor do I know anything about its license or, for that matter, android programming so I am not sure I'd be able to do anything useful with the Referey code).

    Sure enough, using Referey on a Zotero-to-Referey db would only allow using/modifying the PDFs, not modifying the Zotero db itself, so it ain't a full solution, but it is probably more than enough for those of us who use tablets mainly for PDF reading/annotation.
  • Update:

    I prepared some code that takes a Zotero db and produces a db that Referey will understand. This will give you access to the PDFs in your tablet and preserves tags and collections, and it is much faster than the BiBTeX route. Available from https://github.com/rdiaz02/Zotero-to-Referey
  • Zotable with aggressive syncing:

    Even if I set aggressive syncing, collections and subcollections only have partial data. It seems that to have the full library on the tablet, I would first need to click on every single lower-most subcollection so that an update is requested from each of them.

    - Is anyone else experiencing this issue?

    - Is this the intended behavior of "agressive syncing"?

    - If it is, could there be something like "_really_ aggressive syncing" that syncs the whole library without the need to go through every single subcollection?
  • Hello, I've been reading and re-reading the posts (Adios Mendeley and Zotero to Referey) on github, trying to understand them, but I don't know anything about code.

    I've never used Mendeley, (I'm a third year masters student now, so I've just started to research), but I've been going crazy with trying to figure out the best way to use zotero (stand alone or on firefox, download add-ons or not, another app, or what) so that I can read, annotate and save my pdfs on the go in such a way that they easily sync with zotero on my home computer.

    Then I realized I wasn't the only one.

    I've managed to install syncthing on both my imac and android tablet successfully, I think - it does sync my zotero storage folder on both devices, at least part way.

    I've definitely gotten stuck on the Referey part. I've installed it on my android tablet, but it says database not found and I don't know what to do. I've tried several different paths for the sql and the folder storing the pdfs, but I'm not doing it right.

    As you can tell, I need a lot of help. I don't know any code, and even simple stuff is pretty hard for me.

    I've opened my file manager, ESfileexplorer and copied fullpath of the locations of both the sql and the pdfs folder on my tablet, and then pasted it into the appropriate space in referey, but nothing - error accessing database.

    Luckily I don't have much in zotero so I could easily just start from scratch, but even if I did that, what is the best way to go to use it with an android tablet and imac?
  • @rdiaz02: that sounds like the ongoing issue I've had with Zandy: I have a big collection (2000+ items) and it's never synced it completely. I think I'll be buying Zotable anyway (to at least provide an encouragement signal!) but it wasn't just the UI of Zandy that needed an overhaul...
  • @danceheals: I am sorry about your trouble. You mention an imac, and there I am affraid I cannot help much. So I'll try to help in the parts I can.

    Before we get going, though, using the code in the Zotero-to-Referey github page is probably not easy. Even if I use it daily, it is a hack that I've only tested in Linux; it also requires a working installation of R (and debugging it requires knowning a little bit of R). If you only want to read and annotate PDFs maybe a standard usage of Zotfile would be simpler.

    Referey and locating the db: you have to tell Referey the complete path of the sqlite db. What sqlite db? The sqlite db that the R script created in your computer. So the workflow is something like:

    1. In the computer, using the R script create a Referey db from you Zotero db. So we do Zotero db-> Referey db. Let's call this newly created db "rf.db".

    2. Sync (e.g., using syncthing, or whatever) the "rf.db" from the computer to the tablet.

    It is the "rf.db" that Referey needs to see.

    When you use Syncthing to sync stuff, you have to specify the directories you sync. Syncthing uses the term "folders" to refer to a set of files under its control. Now, the same Syncthing folder can, of course, refer to different directories in different machines (computers, tablets, etc). For example, suppose in Syncthing you call something "My_Zotero_Referey_db". This is the name of the Syncthing folder in all of your devices: this is the name of the entity that will be shared between your computer and your tablet. This is what you specify in the "Folder ID" box in Syncthing. In your computer, when you configure Syncthing, this Syncthing folder might be the directory "/home/my_username/Ref" and in your android tablet it could be "/sdcard/referey_stuff" (this is what you write in the "Folder Path" box in Syncthing).

    Now, in your tablet, you would tell Referey that the "rf.db" lives under "/sdcard/referey_stuff/rf.db". Note I am giving the full path, which includes the directory (the "Folder Path" sensu Syncthing plus the file name).

    If you are getting errors accessing the db it could be because the path is not correctly specified, or because the db has an incorrect format (e.g., the db was not transformed appropriately for Referey).

    So a few things you might want to check:

    1. Is R really converting the file successfully? For instance, does the db file produced from R have a size different from 0? And is R giving errors or warnings? (R errors or warnings should show in the .Rout file).

    2. The db path in Referey, is it really to a file that exists (with that path) in your tablet?

    3. Is this file that you are telling Referey about the file that was produced as the db from the run of the R code?

    Once Referey sees the db, you can then worry about getting the PDF directory correct. In terms of syncing (folders, directories, etc) similar considerations apply to the PDF folder. I use separate folders for the PDFs and the db but that is largely irrelevant, although convenient.
  • @cjb: thanks for confirming the issue. I actually purchased Zotable, but the reported problem of not syncing large libraries plus the lack of support for using local PDFs in the tablet have been showstoppers for me (I uninstalled it, and I am now relying exclusively on my Zotero to Referey hack).
  • An update about Referey: the author has made the code available in github: https://github.com/kleinkm/Referey so it would probably be feasible to modify it to accept Zotero dbs (which would end up being a lot nicer, simpler, and faster than my Zotero-to-Referey stuff).
  • thanks for all your guidance rdiaz02 ~ with my limited IT capacity, at the moment I'm using zotero standalone, syncthing, then zojo (on the android tablet - as it works offline, simply to find which articles/etc. are in a certain zotero subcollection), then searching for that article/etc. through my android pdf reader, Xodo. at least this way I can read whatever I want when on the go, make highlights and stuff and then have it sync with the same file linked to the zotero standalone. I haven't been able to use zotfile on my android.
  • I agree with Heckscher above, that the Zotero web based access is really pretty good even on an Android phone, and it does most of what I need on the move. Until there is a fully developed Android app I think this is all I shall need.

    I haven't yet discovered the bookmarklet referred to that will allow saving of references. Hints on this appreciated.
  • Bookmarklet: https://www.zotero.org/downloadbookmarklet
    There's a lot of ongoing work on the website, so I have high hopes for some improvements on the website, too.
Sign In or Register to comment.