Archive for January 26, 2017

Thursday, January 26, 2017

Omni’s 2017 Plans

Ken Case:

We’ll be continuing the process of switching to free downloads across all our apps on Mac and iOS. Beyond the benefits we’ve already delivered (upgrade discounts, free upgrades for recent purchases, and free trials), this will make it possible for us to offer enterprise licensing for our iOS apps with support for volume discounts.


This summer, OmniFocus will be ten years old. We’ve improved a lot of things about the app over those ten years, but to maintain file format compatibility there are some things about the way we work with the app that haven’t ever changed. Last year we laid the groundwork for finally changing some of those, when we switched to a new, extensible file format and added encryption. This year, we’re going to make some fundamental improvements to the data OmniFocus keeps track of.


In 2016 we scratched the surface with URL automation on iOS, but in 2017 we plan to roll out user automation on iOS in a big way across all our apps with a much richer set of capabilities. This automation support won’t be limited to a simple set of URL primitives; instead, we’re adding support for running JavaScript code: code that has the same level of deep support for manipulating the data in our apps as we’ve previously exposed to AppleScript.

As with Core Data and cloud storage, they’re not waiting for Apple to provide the services that they want for their iOS apps.

Update (2017-02-20): See also: Omni Automation.

Swift ABI Stability Manifesto

Michael Ilseman (tweet, Reddit):

ABI is per-platform, as it is a low level concern influenced by both the architecture and the OS. Most platform vendors define a “standard ABI” which is used for C code and built on by C-family languages. Swift, however, is a very different language from C and has its own per-platform ABI. While most of this document is platform-agnostic, platform-specific concerns have influenced details of the design and implementation of Swift’s ABI.


Decisions about the ABI will have long-term ramifications and may limit the ways in which the language can grow and evolve in the future. Future Swift versions can add new, orthogonal aspects to the ABI, but any inefficiencies or inflexibilities present when stability is declared will (effectively) persist forever for that platform.


Library evolution introduces resilient layouts of public types by default and provides new annotations that freeze the layout for performance. A resilient layout avoids many of the pitfalls of the fragile binary problem by making the layout opaque. Resilient types have far more freedom to change and evolve without breaking binary compatibility: public data members can be rearranged, added, and even removed (by providing a computed getter/setter instead). The new annotations provide the ability to relinquish these freedoms by making stricter guarantees about their layout in order to be more efficiently compiled and accessed.


Any standard library API shipped post-ABI-stability must be supported into the future to ensure binary compatibility. The standard library will also be utilizing resilience annotations and inlineable code. Inlineable code is code that is bundled with the client’s code, and is available for inlining to the optimizer if it decides to do so. The standard library faces the following (non-exhaustive) list of challenges for ensuring binary compatibility[…]

Previously: Chris Lattner ATP Interview, ABI Stability Deferred Until After Swift 3.0.

Update (2017-01-27): David Hart:

ABI stability is an important feature which many Swift users are looking forward to. If I understand it correctly, once it’s here, the Standard Library becomes part of that ABI and only additive and backwards-compatible changes can be done. Seeing how we are still heavily modifying the Standard Library this year (Strings), wouldn’t it be wiser to let those changes simmer under the scrutiny of the broader community of Swift users for a year before we make it into the ABI?

See also: Swift 4 String Manifesto.

Habits and Productivity

David Sparks:

If you’ve been thinking about changing some habits as we head into 2017, why not game the system with an app? I have fallen off the wagon with habit tracking so I looked at a lot of the popular habit tracking apps before settling on Productive as my favorite. It has a bit of whimsey in its design and is customizable in just about every way you can think of for a habit-tracking app.

Eddie Smith:

My favorite app for habit-forming is Streaks, which is designed to encourage you to complete tasks over consecutive days, X times per week, etc. It can even read health data from your iPhone and automatically check off health-related tasks.Being January, a lot of people have habit-forming on the brain. My favorite app for habit-forming is Streaks, which is designed to encourage you to complete tasks over consecutive days, X times per week, etc.


But in 2016, I started taking a more inverted approach and embraced the “to-don’t.” I’m willing to bet for most people in modern times, you’ll find more low hanging fruit in to-don’t lists, which are simply lists of things you do not want to do.

Eddie Smith:

I’ve begun to understand that I’m essentially a collection of “selves” that change subtly throughout the day, and I’ve learned to manage these “selves” as different workers—or like a great football coach who knows how to get each player to play to his full potential.

Twitter Sells Fabric to Google

Rich Paret:

In just two years, Fabric has grown to reach 2.5 billion active mobile devices, and Fabric’s Crashlytics and Answers kits were recently recognized as the #1 SDKs for app stability and analytics. We are incredibly proud of the products we have built and grateful to this community of more than 580K passionate mobile developers.

Today we enter the next chapter for Fabric and are pleased to announce that we’ve signed an agreement for Fabric to be acquired by Google and for our team to join Google’s Developer Products Group, working with the Firebase team.

Francis Ma:

Our ultimate goal with Firebase is to free developers from so much of the complexity associated with modern software development, giving them back more time and energy to focus on innovation.


The integration of Fabric is part of our larger, long-term effort of delivering a comprehensive suite of features for iOS, Android and mobile Web app development.

Marco Arment:

iOS devs: Any decent self-hostable crash reporters, analytics packages?

I think it’s wise to consider bringing this in-house these days.

Dumping Fabric for Overcast 3 since their Google acquisition. We had a good run and it gave me lots of data, but very little was actionable.

Apple Sues Qualcomm

Apple (PDF):

Qualcomm was one among many companies that contributed to the development of standards related to how cellular phones connect to voice and data networks. As a contributor, Qualcomm is entitled to a fair royalty based on the value of its particular contribution. Qualcomm is not entitled to collect royalties based on the contribution of others to the standard, or unrelated innovation by companies that utilize the standard—but this is precisely the business model that Qualcomm has established and that it protects through monopoly power and unlawful licenses. In order to purchase Qualcomm chips or obtain access to patents pledged to a cellular standard, Qualcomm demands that third parties pay Qualcomm a royalty much greater than the value of Qualcomm’s contribution to the standard— a value based on the entire price of the innovative products that only incidentally incorporate the standard.


Apple, which has been overcharged billions of dollars on Qualcomm’s illegal scheme, brings this action to recover its damages, enjoin Qualcomm from further violations of the law, and request declaratory relief. Among Apple’s damages are nearly $1 billion that Qualcomm owes to Apple under an agreement between the two companies. Qualcomm claims that Apple has forfeited those amounts by responding to requests in the course of an investigation by the Korea Fair Trade Commission (“KFTC”), which recently levied the largest fine in its history against Qualcomm. Qualcomm has withheld the required contractual payments from Apple even though the agreement clearly permits Apple to respond to the KFTC’s lawful investigation and requests for information. If that were not enough, Qualcomm then attempted to extort Apple into changing its responses and providing false information to the KFTC in exchange for Qualcomm’s release of those payments to Apple. Apple refused.


“While we are still in the process of reviewing the complaint in detail, it is quite clear that Apple’s claims are baseless. Apple has intentionally mischaracterized our agreements and negotiations, as well as the enormity and value of the technology we have invented, contributed and shared with all mobile device makers through our licensing program. Apple has been actively encouraging regulatory attacks on Qualcomm’s business in various jurisdictions around the world, as reflected in the recent KFTC decision and FTC complaint, by misrepresenting facts and withholding information. We welcome the opportunity to have these meritless claims heard in court where we will be entitled to full discovery of Apple’s practices and a robust examination of the merits,” said Don Rosenberg, executive vice president and general counsel, Qualcomm Incorporated.

There are some good comments on Hacker News.

Update (2019-01-15): Juli Clover:

Williams also detailed many of Apple’s past interactions with Qualcomm. In 2011, when Apple negotiated a contract to use Qualcomm as a supplier for modems instead of Infineon because of Apple’s need for CDMA-compatible chips, Qualcomm demanded a percentage of the iPhone’s cost.

The two companies ultimately negotiated a rebate that brought the total royalty fee down to $7.50 per iPhone, though Apple had wanted to pay $1.50 per phone, equivalent to 5 percent of the value of the baseband chip, which was $30. Under the terms of that deal, though, Apple had to agree to a “marketing incentives agreement” to speak out against the WiMax standard that was popular at that time.

Update (2019-01-23): Juli Clover:

Apple has been ordered to stop using a part of a recent press release that claimed the iPhone 7 and iPhone 8 would still be available in Germany through carriers and resellers, reports Bloomberg.

Apple released the statement following a preliminary injunction in December that prevented the company from selling older iPhones in Germany. Apple at the time said that while it would stop selling the devices at its own retail stores, they would remain available via other means.

Juli Clover:

Williams wanted to continue to work with Qualcomm despite the legal battle, but Qualcomm accused Apple of leaking Qualcomm computer code needed to customize mobile chips. Williams offered to “firewall” the Apple engineers using the Qualcomm software and said nothing of value could be obtained from the code anyway.


Qualcomm in September 2018 accused Apple of stealing confidential information and trade secrets and passing it on to rival chipmaker Intel.

Update (2019-01-29): Rob Enderle:

In reading through the testimony, it appears clear that even the basis of this case is in question. It is presented as a pricing dispute over a $7.50 licensing charge Qualcomm levies on iPhones, which they argue should be closer to $6 (most pay $13 and get less service, by the way). This disputed amount is about .15 percent of the cost of a $1,000 iPhone. Even if Apple passed the saving through to consumers, which it likely would never do, given its focus on increasing margins, this would save you $1.50 on your next iPhone purchase. The seeming misdirection is that while this would result in billions to Apple, it likely should be paying a premium over the $13 other firms pay because it requires a massive amount of special services also identified in the trial. So, ironically, Qualcomm shouldn’t have given the firm a discount and likely wouldn’t be in this position if it hadn’t. (Typically, Qualcomm licenses the manufacturers of the phones, not the brand owner, but made a regrettable exception for Apple.)

What became clear in testimony this week was that Apple just wants Qualcomm’s IP, but doesn’t want to pay for it. An Apple executive witness testified that Qualcomm refused to sell Apple modems to support the FTC contention that Qualcomm punitively punished firms that didn’t license its technology. While true, this was an interesting deception that avoided the nuance. What happened was that Apple wanted access to source code as part of the deal, but since it had been allegedly providing this source code to Intel to help it catch Qualcomm, Qualcomm demurred and provided three choices.

Apple could get the modems without the source code (since Qualcomm does much of the integration work, Apple doesn’t really need it); it could get the last generation of Qualcomm modems, which it had the source code for and had been crippling to cover up the fact that the Intel modems weren’t competitive; or it could get the new modems and the source code if Apple committed to using them for at least 50 percent of its phones. On this last, Qualcomm wanted to make sure it didn’t provide Intel the source code through Apple and then not actually sell any of its own modems.

Update (2019-03-21): Juli Clover:

Apple and Qualcomm this week wrapped up a patent trial where Apple was accused of infringing on three of Qualcomm’s patents, and the verdict from the jury is in -- Apple violated Qualcomm’s patents in its iPhones.