This is in response to a number of questions about Appcelerator Titanium module creation & deployment to the Appcelerator MarketPlace. I asked the same questions to five great developers from around the world who have already been through the procedure of developing, testing & deploying:

Marcel Pociot from Germany

1) What modules have you created?
I’ve created two modules, which are both hosted on Github as open source modules:
iOS 5 Twitter – The first one is a simple module to create the Twitter compose sheet which was introduced in iOS5. So obviously it only supports iOS as the target platform.
iOS Asset Library Access – The second module gives access to the ALAsset framework, introduced in iOS4. It allows to access the phones saved photos without the use of the default camera-roll picker. So this one is also just for iOS. You can find them on Github here.

2) What gave you the inspiration to create the module(s)?
Well, first of all the modules where needed in the app I’m currently developing.
So I looked around the Appcelerator marketplace without success (well, at least for free). That’s why I decided to make it open source and develop it on my own.
I also really like the open source idea and it really bugs me that some module developers want that much cash for those few lines of code.

3) How was the documentation on the Appcelerator site on module creation?
I have just some basic/intermediate knowledge of Objective-C, so I had to look for some tutorials on developing the modules. I looked at the module creation documentation a few months ago and found it to be pretty confusing back then.
So things have improved a lot. It really helps to get you started with module development. So there was a lot of trial and error involved.
Also some basic stuff seems to be missing for me – like how to NSLog straight from Xcode without having to unzip your module every time, place it inside your app and test.

4) How is your knowledge in Objective-C & Java?
Well, see question 3. Pretty much just basic knowledge, but I think the general programmer brain can handle every language ;)

5) Are you available for freelance work?
Yeah sure! Just get in touch with me via twitter (@marcelpociot ) or mail!

Ruben Fonseca from Portugal

1) What modules have you created?
Testflight – Painless integration with TestFlight SDL, for iOS
Dropbox iOS – Dropbox SDK for Titanium Mobile, iOS. Allows you to access the Dropbox API
Sharekit – Drop-in social share features for iOS (Twitter, Facebook, email, etc)
KeyChain – Securely store sensitive information on your iOS device
iOS5 Twitter Framework – Tap into the iOS5 Twitter integration

2) What gave you the inspiration to create the module(s)?
I build apps as a freelancer. While building Titanium Apps for some clients, I needed to create these modules. For instance, Testflight and Sharekit is a module I use in almost all my iOS projects. So after a while I realized I have a lot of common code I could extract into modules and sell on the Marketplace.

3) How was the documentation on the Appcelerator site on module creation?
The documentation was good enough for me, but at the beginning I had to dig through the titanium mobile source code for finding APIs and examples of code I could use to build my modules.

4) How is your knowledge in Objective-C & Java?
I was an iPhone/iOS developer before Titanium Mobile appeared, so I’m very comfortable with Objective-C. I’m OK with Java, but it’s not my favorite type of language.

5) Are you available for freelance work?
Right now I’m completely booked. My up to date information about my availability to freelance work is always available at http://blog.0×82.com/hire_me/

Atsushi Kataoka from Japan

1) What modules have you created?
Repeated BackgroundImage for iOS -
This module extends some properties to window for repeated background-image.
Gesture Recognizer for iOS – This module extends “rotateGesture” “pinchGesture” “panGesture” property to your view.
You can handle rotate/pinch/pan gesture in Titanium Mobile.
Filterable ImageView for iOS – Display image with 18 basic color filters.
You can describe your original filter with JavaScript. Tilt-shift effect is included.
Filterable Camera for iOS – Camera with 18 basic color filters.
You can describe your original filter with JavaScript. Tilt-shift effect ready.

The open source modules are located here.

2) What gave you the inspiration to create the module(s)?
I create modules which Titanium Mobile currently does not support..

3) How was the documentation on the Appcelerator site on module creation?
I used the Wiki, Google & Github as there are many open-source modules on there! Also in Japan, there are some articles for developing modules too.

4) How is your knowledge in Objective-C & Java?
Objective-C – I know how to ‘release iOS App on the AppStore’, ‘detect memory leaks by using Instruments’, ‘detect performance bottlenecks by using Instruments in xCode’ & others like ‘ OpenGL ES shader programming etc’.
Java – I understand the ‘Language specification & Web Application Framework basics’…(I’m not familiar with Java…)

5) Are you available for freelance work?
Yes :)

Olivier Morandi from Italy

1) What modules have you created?
Almost an year ago I started my journey in Titanium module development by creating the TiSMSDialog iOS module, since SMS sending capabilities were inexplicably missing from the core Ti API. Later on I ported the same feature (though with a different API) to Android. Recently I had to fork and refactor a bit the original TiStoreKit module from Yuichiro Masui (@masuidrive), since I had some problems with the official StoreKit module from Appcelerator, especially for correctly handling in-app renewable subscriptions in iOS. These modules are available as open source on Github. Besides these, during the past year I’ve been creating some iOS modules for clients who needed the functionality of existing iOS libraries to be available for their Titanium Mobile projects, as well as some specialized views where performance was highly critical.

2) What gave you the inspiration to create the module(s)?
Inspiration is usually dictated by need: the lack of a specific feature in the official Ti API, the need to optimize a portion of the app in order to achieve better performance, or, again, the opportunity to leverage some pre-existing native library. In each one of these cases, the best solution is quite surely to write a module wrapping the desired functionality, keeping the core business logic of the app in JS-land.

3) How was the documentation on the Appcelerator site on module creation?
I have to say that the documentation on module development available in the Appcelerator wiki covers only the tip of the iceberg, and it’s sufficient to get started with a basic module. However, since Titanium is an open source project, when things get more complicated the best thing to do is to dig into the Ti SDK source code and learn from that, looking at how portions of the Ti API have been mapped onto native modules.
Besides, there are now a lot of modules available as open source from which one can learn.
From my, part I try to share my findings about the Ti SDK internals and module development in my blog.

4) How is your knowledge in Objective-C & Java?
I cannot say I’m an expert, but I can get things done with them ;-)

5) Are you available for freelance work?
Yes!

Jeff Bonnes from Australia

1) What modules have you created?
I created an Android Mapping module for Ti 1.7.5 that I called MapPlus. It allows you to add ‘Tile Overlays’ like ones created using GDAL2Tiles on top of a native map control. It also improved / added some of the methods around the annotations.

2) What gave you the inspiration to create the module(s)?
I had a client who had done a native iOS version of an app and used MapKit to do the tile overlay. They wanted to try using Titanium for the Android version, but needed the same functionality. They did a Proof of Concept which allowed me to figure out what was possible with base Titanium, and what modules needed to be built.

3) How was the documentation on the Appcelerator site on module creation?
The Appcelerator Wiki was great for learning how to get setup for Module development and the Forging Titanium series had some great hands-on example. I used the Titanium Map module as my base so had plenty of code to work with. Boydlee Pollentine also shared some code with me that really helped. All up, it took me about 5 days to code, then 2 days to recode to improve the performance.

4) How is your knowledge in Objective-C & Java?
I am familiar with Objective-C (I’ve done an iPhone bootcamp) so could read all the Mapkit code that the original iOS version of the App used. I am a Java developer from way back (although a bit rusty as I have moved away from strongly typed languages) so the actual coding of the module was pretty straight forward.

5) Are you available for freelance work?
I am! I released the app with the module to the Android marketplace just before Xmas. It had to be ready for the Boxing Day test match between Australia and India. I am taking a couple weeks off and I fully anticipate that I’ll have another project starting mid-January.

I want to say a big thank you for all those who took part! Please remember, English may not be their native language but they did a great job guys – Code Strong!