Archive for October, 2008

So I Installed git and git-svn on Cygwin

Sometime I’ll have to tell you about why I chose git.

Installing on cygwin wasn’t too bad. Had a few problems, though.

A little background

  • git is an open source, distributed version control system, originally created by Linus Torvalds, and greatly enhanced by the open source community.
  • svn or Subversion is an open source, centralized version control system.
  • git-svn is a git command to let you use the distributed functionality of git, and interact with the centralized world of subversion.

Cygwin setup

Running cygwin’s setup program gives you a GUI package installer. I like to use the xmission mirror, both because it is geographically close by, and because it is fast.

After all the preliminaries, click the “View” button to get an alphabetical list of packages, and expand the window so you can see a bit more. (I’m SO grateful cygwin finally made the window expandable, that I feel a bit guilty complaining that the initial window size is still too small…)

You’ll need at least the git, gitk, perl, and subversion-perl packages, and there’s lots of other good stuff there, too – like a full x.org X-Windows system.

These required packages will also install a lot of other dependencies, so be prepared to wait a bit while it downloads and installs everything.

Download Error.pm

I also needed to download Error.pm from CPAN into my c:/cygwin/lib/perl5/site_perl/5.10/ directory. (Thanks, Martin Carpella!)

Run git-svn

After everything is installed, you should be able to run git-svn. Note that there are two ways to run git-svn:

  1. git svn runs the wrapper program (git) which spawns the svn submodule
  2. git-svn runs the svn submodule directly

The installation process put git in /bin and git-svn in /usr/sbin/git-core/. I didn’t want to add that directory to my path, so I just run git svn.

Using git-svn

Andy Delcambre describes a basic workflow to use git-svn. There’s a more detailed description on git.or.cz

Some Problems

  • subversion-perl or perl not installed. Use the cygwin setup program.
    git: 'svn' is not a git-command. See 'git --help'.
  • Perl not found or not installed (I reinstalled perl using the cygwin setup program):
    /usr/sbin/git-core/git-svn: /usr/bin/perl: bad interpreter: No such file or directory
  • Need to download Error.pm, or need to place it in the @INC path:
    Can't locate Error.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.10 /usr/lib/perl5/5.10/i686-cygwin /usr/lib/perl5/5.10 /usr/lib/perl5/site_perl/5.10/i686-cygwin /usr/lib/perl5/vendor_perl/5.10/i686-cygwin /usr/lib/perl5/vendor_perl/5.10 /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/vendor_perl/5.8 .) at /usr/lib/perl5/vendor_perl/5.10/Git.pm line 100.

Leave a Comment

So I Doubt We’ll Get Flash or Java on the iPhone

…at least, not in their current forms.

There’s been some buzz about Flash coming to the iPhone. The problem is, that the problem is not technical – for both Flash and Java.

The Backstory

First some history:

  • Apple (Steve Jobs) has said that Flash is too big and slow on the iPhone, and that Flash Lite is too cut down, and thus not useful
  • Jobs also says that “Java’s not worth building in. Nobody uses Java anymore. It’s this big heavyweight ball and chain.” NY Times
  • Adobe has been pushing to get Flash on the iPhone, saying “it works”, etc.
  • Sun committed to provide Java on iPhone with the SDK, but when they saw the SDK restrictions, they had to backpedal to provide Java on the iPhone “if at all possible.”
  • Apple didn’t want to provide a native apps SDK – keeping all app development in-house.
  • Apple only provided a native apps SDK when it became clear that the jailbreak apps were wildly popular, completely outside Apple’s control, and thus threatening to take control of the iPhone platform away from Apple
  • Apple provided the SDK with very stringent restrictions – both the NDA, which has since been reluctantly lifted, and strict limitations on the applications developed with the SDK – including requirements that applications do not call any non-SDK APIs and do not download executable code or provide any interpreters. This last restriction is aimed directly at technologies like Flash and Java that execute code from third parties.

Apple the Monopolist

This pattern makes it clear that Apple is very intent on keeping control of the applications provided on the iPhone platform. They have some legitimate reasons for this (i.e., protecting their brand, protecting the user experience, protecting the cell network of their carrier partners), but I think the dominant reason is just protecting their very profitable monopoly.

Apple has a monopoly on the distribution of iPhone applications (barring the jailbreak apps), and they are determined to retain that. This monopoly is what allows them to do that other protection – of brand, experience, and network. It also is what allows them to charge every application developer 30% of revenue plus $99 per year. And what allows them to prevent applications that compete with iTunes, another big money maker. And also what allows them to limit iPhone development to being done on Apple hardware, another big money maker.

I’m quite confident that both Sun and Adobe have been working the back channels to convince Apple to allow Java and Flash on the iPhone, but that Apple will not budge.

What Will Work

I see three things that can get Apple to change their position:

  • Widespread public outcry for the other technologies. This seems to be what Adobe and Sun would be hoping for. However, Apple doesn’t really listen to customers. “Uncle Steve knows best.” The only leverage Apple customers have is their dollars, hence the next two possibilities.
  • Widespread adoption of a competing platform – namely, Google’s Android. This could be viewed as the ultimate loss for Apple – thousands, millions of potential customers going with a competing platform – but Apple has played the elite-user-friendly-minority-platform-where-we-have-a-monopoly role before, and I think they’ll be willing to do it again on the iPhone if that’s what it takes to retain control.
  • Widespread defection of users and developers to the open jailbreak technologies. This is what got the SDK and the degree of openness we have now. If Apple feels it is going to lose control of the iPhone platform, Apple releases partial control – first the SDK, then lifting the NDA, next… What? How can Apple retain control of the platform and give users and developers Flash or Java?

Apple-Friendly Flash and Java

So, how can Apple retain control of the platform but allow users and developers Flash and/or Java?

Well, they could allow Java as just another language to produce SDK applications sold through the AppStore. AlcheMo translates compiled JavaME applications to C++ code that is then compiled on the SDK. The resulting application can only run on the iPhone after going through Apple’s AppStore vetting process.

Flash? Frankly, the web’s model of flash widgets embedded in web pages isn’t going to fly on the iPhone. It just doesn’t have enough memory to support that use model. Flash Lite? Does anybody think that’s enough? Steve Jobs said there’s a “missing product in the middle.”

How about Adobe Air, letting users run Flash applications on the iPhone “desktop”? Well, if Adobe produces a version that makes these apps standalone, without the ability to download additional code to run, we have the “product in the middle” that Steve indicated could be worthwhile – and that let’s Apple preserve it’s control over the platform.

When users and developers defect to other platforms, and Adobe and Sun deliver versions of Flash and Java that let Apple control the applications delivered to the iPhone, Apple will let it happen.

kb

Comments (2)

So I Want an iPhone SDK Development Book

…but thanks to Apple’s recently lifted NDA, they aren’t available yet. But without the NDA, more should be coming soon.

Here are the ones I’ve found on Amazon (these are my affiliate links):

iPhone Open Application Development: Write Native Applications Using the Open Source Tool Chain, 2nd Edition, by Jonathon Zdziarski. This is the one I pre-ordered. The author was one of the original iPhone jailbreakers. The first edition sold out quickly, so this is the updated follow-up. This is the book to get if you want to be able to exploit the full capability of the iPhone, including APIs that Apple doesn’t document – but if your primary target is the Apple AppStore, you may need to rely on the SDK documents or on another book. Note the First Edition PDF version is still available.
 
iPhone SDK Development, by Bill Dudney, Chris Adamson, Marcel Molina. The Pragmatic Programmers’ take on the iPhone. I’m really intrigued by this one, too. This appears to be a good comprehensive treatment of SDK development, and coming from the Pragmatic Programmers, it should be quite practically oriented. This book was delayed because of the Apple NDA, but is currently available in beta as a PDF and the source code is also available for use in your projects, but not for training material, books, articles, etc.
 
iPhone in Action, by Christopher Allen and Shannon Appelcline. The publisher provides Early Access chapters. This book will cover both web and SDK development. Chapter 2 in the early access provides a detailed description of the tradeoffs of web, SDK, and various hybrid development strategies. I’m more inclined to go with a focused SDK book.
 
iPhone SDK Application Development: Building Applications for the AppStore, by Jonathan Zdziarski. Jonathan Zdziarski comes in from the cold – here’s his book for the AppStore. I expect this book will make a great companion to his Open Application Development book, but it won’t be available until 2/15/2009. I do wonder if Jonathon will run afoul of the SDK agreement’s restriction on circumventing Apple security measures…
 
The iPhone Developer’s Cookbook: Building Applications with the iPhone SDK, by Erica Sadun. To be released “as soon as Apple lifts the NDA on the iPhone SDK.” We’ll see when it becomes available, as Apple announced they were lifting the NDA (but haven’t posted the new agreement) 10/2/2008. Now available! This book sounds more like a collection of snippets to me, rather than a comprehensive look at the SDK. It also talks about tools to reverse engineer non-SDK frameworks, which could be interesting. Source code for the examples is available.
 
Beginning iPhone Development: Exploring the iPhone SDK, by Dave Mark, Jeff LaMarche. One of the well-regarded Apress Beginning… series, this will likely be a well-edited, comprehensive book.
 
 
iPhone SDK Programming, by M.A. Ali. A 512-page book from John Wiley and Sons, in English. That’s about all we know about it at this point, especially because a search for the ISBN on Wiley and Sons returns nothing.

Comments (1)

So I Had to Laugh

…at an The Unofficial Apple Weblog (TUAW) “Terminal Easter Egg”.

One of these “eggs” is the ability to play Tetris in Terminal. Here’s how to do it. First, open a new Terminal.app (/Applications/Utilities) window and type “emacs,”…

I guess another Easter Egg is a full-fledged development environment – yes, also Emacs – the operating system disguised as a text editor disguised as a Terminal Easter Egg.

Comments (1)

So I Don’t Need to Agree

…to the Apple iPhone SDK NDA.

Apple has lifted the NDA. Kudos to Apple for lifting it, shame on them for writing it and taking so long.

From Apple: http://developer.apple.com/iphone/program/

To Our Developers

We have decided to drop the non-disclosure agreement (NDA) for released iPhone software.

We put the NDA in place because the iPhone OS includes many Apple inventions and innovations that we would like to protect, so that others don’t steal our work. It has happened before. While we have filed for hundreds of patents on iPhone technology, the NDA added yet another level of protection. We put it in place as one more way to help protect the iPhone from being ripped off by others.

However, the NDA has created too much of a burden on developers, authors and others interested in helping further the iPhone’s success, so we are dropping it for released software. Developers will receive a new agreement without an NDA covering released software within a week or so. Please note that unreleased software and features will remain under NDA until they are released.

Thanks to everyone who provided us constructive feedback on this matter.

Apple responds to criticism and lifts NDA: 8 months
T-Mobile responds to criticism and lifts 1GB/month cap: 1 day

But definitely good to have the NDA gone…

And I wondered “how these iPhone SDK Books pass legal muster? Special license from Apple? How does one get such a special license?”

Ars Technica explained that various books were on hold – either waiting to be printed, or waiting to be written, because of the NDA.

So, one less obstacle to iPhone development – now to just get clarification of the AppStore criteria…

Comments (4)