In the Parsha Code Removed from KosherJava Zmanim Calendar API article posted two years ago, I documented the removal of the parsha code from the KosherJava Zmanim API due to licensing issues. I would like to announce that thanks to Yechiel Paricher, the zmanim library now supports a clean LGPL implementation. Yechiel’s Jan 17, 2019 pull request that was a port of his C libzmanim code, was finally merged on August 22nd, and over the past day, the old formatting code for parshiyos was restored after being changed to work with the new code. The new code not only restores the old functionality, but adds support for the special parshiyos of Shekalim, Zachor, Parah and Hachodesh. It also added support for Shabbos Mevorchim and Machar Chodesh.
Due to licensing issues that were brought to my attention last year, the parsha code was removed from the Zmanim API on Aug 22, 2016. In the future I may release the parsha code as a standalone module under the GPL license, or create a new LGPL implementation. To understand this more clearly, the current Zmanim API is licensed under the LGPL, while the parsha code contained some GPL code that had to be removed in order to retain the LGPL license. I would welcome any code submission for parsha code that could be released under the LGPL.
The Zmanim API version 1.3.0 was released on March 4th, 2013 כ״א אדר תשע״ג. Various changes in the new release VS the previous version 1.2.1 that was released in May 2010 can be seen below. This release includes beta support for Jewish Calendar calculations as well as a number of updated zmanim and refactored code. The Jewish Calendar support in the Zmanim API is based on Avrom Finkelstien’s HebrewDate project released in 2002. Unlike the Zmanim code, the Jewish calendar interfaces may change significantly in the future (see Jay Gindin’s various changes that may make it into this API) and should therefore be considered beta.
Changes in the Zmanim API 1.3.0 release
- Refactoring of zmanim calculations to allow more flexibility in generating custom zmanim. New generic methods that take an arbitrary start and end of day for many zmanim such as sofZmanShema and getPlagHamincha etc. This makes calculating atypical zmanim that I had not anticipated when creating the API. I receive such requests from time to time, and the changes greatly simplify these types of calculations. Examples of recent requests are:
- Zman krias Shema calculated from alos as 72 minutes before netz and tzais as 7.083 degrees
- Plag hamincha from alos 7.083° to tzais 7.083°
- Many rounds of general code refactoring to simplify and stabilize the code and make it easier to port. Thank you Jay Gindin for his many suggestions.
- The addition of Erev Pesach zmanim to the Zmanim API
- Added Tzais Geonim 3.676 degrees (18 minutes as calculated by Stanley Fishkind)
- Calculation of Kiddush Levana and molad times
- Hebrew calendar support (with formatters and Yom Tov calendar)
- Daf Yomi calendar
- A number of bug fixes including a fix to DST correction, and a calendar date correction
- Changing the license of the KosherJava Zmanim API from GPL 2 to LGPL 2.1
- Many additions and clarifications to the Zmanim API JavaDoc documentation. My thanks to Reb Feivel Muller for his valuable input.
- Removal of the deprecated (and inaccurate) JSuntimeCalculator.java class. This has been deprecated since 2008. The NOAACalculator replaced this class.
- Deprecation of the getSofZmanShmaKolEliyahu() method. Thank you to Rabbi Yisroel Boruch Twerski for pointing out that the Yisrael Vehazmanim was incorrect in including this zman. This is something he discussed with Rabbi Harfenes.
- Uniformly return zmanim based on sea level sunrise and sunset. Most zmanim had this fix a long time ago, but there were a few zmanim such as candle lighting time that were corrected.
- The getCandleLighting() method had a spelling correction (it had been getCandelLighting)
Changes since March 23, 2011 have been in SVN and detailed changes can be seen there.
In the past I posted about Android Zmanim, Jay Gindin’s open source Android zmanim project that uses the KosherJava Zmanim API. The fact that Android development uses Java natively means that it is very simple for Android developers to include zmanim in their apps. Since that time there have been a number of other applications (including iPhone apps) using the code. Moshe’s KosherCocoa Obj-C port of the KosherJava Zmanim API will probably result in additional iPhone apps that use the API. Yitzchok’s older Zmanim .NET port of the KosherJava Zmanim API also opened the door for Windows Phone zmanim applications as well (Ari Polski’s
Zmaim app already uses it, and there are others in the works). I may post additional details about some of them in the future, including an updated post about Jay’s latest Android Zmanim release. I am aware of the following mobile applications that use the KosherJava Zmanim API.
- Android Zmanim (Android)
Zmantime Alarm Clock (Android)
- Daily Zmanim (Android)
- Matanya Beezy
- Matanya Beezy
Ice Cream Siddur YahrtzeitZmanim (Android) Hebrew Calendar (Android)
- Simple Luach (Jewish calendar) (Android)
Zmanim (Windows Phone)
- Siddur (RustyBrick) (iPhone)
mMinyan (for both Android and iPhone)
- ZmanimMinder (Android)
- Find a Minyan (Android)
- Siddur (OKTM) (Android)
- Jewish Cal (iPhone)
Smart Siddur (Android)
- Zmanim (iPhone>.ש< )
- Ultimate Omer 2 (iPhone)
- Sefirat Haomer (Android)
- Shabbat Shalom (Android and iPhone)
Daka Tora (Android) an app for Jewish soldiers
- Mincha Alerts (iPhone)
- Shabbos Zmanim (Android)
Easy Zmanim (Android)
- Halachic Times (Android)
- Jewish Automator Tasker Plugin, a Tasker plugin (Android)
There are also a few secular apps that are non-zmanim specific that use the API for sunrise and sunset calculations. One that I know of is Jeffrey Blattman’s
Dawn to Dusk Widget, and I know that there are some photography apps that use it for sunrise/set calculations as well. There are likely more that I have missed, and a few that are in active development but unreleased. If you are aware of any missed apps, please let me know.
Until this point the KosherJava Zmanim API has been released under the GPL V2.0 open source license. This had the effect of forcing any application written using the library to release it’s source code under the same license. Being that the Zmanim API is a library, the LGPL is a more appropriate license. The LGPL allows developers to use the KosherJava Zmanim API, yet keep their application code closed source. Only changes to the API itself (such as ports to different languages) would have to be released as open source. I had in the past on request released the source under the LGPL (the Zmanim API .NET port has already been released under the LGPL with my permission), and with the recent 3/27/2011 SVN checkin I formally changed the Java Zmanim API license to the LGPL 2.1 (not the newer LGPL 3.0). The next 1.3.0 release will be the first formal release under the LGPL. In one case the change to the license required permission from developer who wrote code used by the the Zmanim API, and this was done.