~~NOTOC~~ ====== Developer Documentation ====== Zotero is an open-source tool, and we welcome anyone who would like to contribute. Programming experience is not always required! Below are the different parts of the Zotero ecosystem, as well as the estimated technical difficulty and the required skills for contributing. Each area has its own starting page with further details. If you have questions about development not answered here, or would like to discuss development with Zotero developers, you can consult and post to the [[https://groups.google.com/group/zotero-dev|zotero-dev mailing list]]. (Please do not use the mailing list for [[/support/getting_help|user support]] questions. Questions regarding the Zotero API, however, should always go to zotero-dev.) A great place to get started contributing to Zotero is the [[https://github.com/zotero/zotero/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Welcome%22|"Help Wanted" tag]] on the Zotero issue tracker on GitHub. |< 100% 12% >| ^ [[dev/Web API]] ^^ | Learn how to access online Zotero libraries using the Zotero API. || ^ Difficulty | low to high | ^ Skills | HTTP/REST, JSON | |< 100% 12% >| ^ [[dev/Client Coding]] ^^ | Learn how to program for the Zotero client. This section also covers the Zotero code repositories and issue tracker, as well as information for developing Zotero plugins. || ^ Difficulty | moderate to high | ^ Skills | JavaScript, CSS, Mozilla technologies (XPCOM, XULRunner, XUL, etc.), Git | |< 100% 12% >| ^ [[dev/Translators]] ^^ | Learn how to develop Zotero translators. These JavaScript files allow Zotero to save items from webpages, import and export items in various file formats (e.g. BibTeX, RIS, etc.), and look up items when given identifiers (e.g. DOIs or PubMed IDs). Because translators are sandboxed, share a similar structure, and are relatively short pieces of code, they are very suitable for beginning JavaScript coders. || ^ Difficulty | low to moderate | ^ Skills | JavaScript, HTML/XML, DOM, regular expressions, XPath | |< 100% 12% >| ^ [[dev/Citation Styles]] ^^ | Learn how to create or modify the Citation Style Language (CSL) citation styles that Zotero uses to format citations and bibliographies. In this section we'll also discuss the citeproc-js CSL processor that Zotero uses to process the CSL styles, and citeproc-node, a wrapper for server-side deployment of citeproc-js. || ^ Difficulty | low to moderate | ^ Skills | XML, JavaScript | |< 100% 12% >| ^ [[dev/Documentation]] ^^ | Learn how you can contribute to Zotero's wiki documentation to make sure it's complete, up-to-date and of high quality. Make it easier for users to learn how to use Zotero, discover new features, and find solutions to problems, and for developers to get the info they need. || ^ Difficulty | low | ^ Skills | writing & editing, wiki editing | |< 100% 12% >| ^ [[dev/Localization]] ^^ | Learn how you can help translating the various parts of the Zotero ecosystem (the Zotero client, wiki documentation, and CSL citation styles) into other languages. || ^ Difficulty | low | ^ Skills | knowledge of English and at least one other language | |< 100% 12% >| ^ Have Your Website Support Zotero ^^ | You can make your website accessible to Zotero by using open standards. || ^ [[dev/exposing_metadata|Expose Your Metadata]] || ^ [[dev/creating_locate_engines_using_opensearch|Create an OpenSearch Lookup Engine]] ||