Peeking inside the Twitter Windows 8 App

I decide to peek inside the Twitter Windows 8 App package to see what language they are using and to see if I can find any open source projects being used within. Well, I found some interesting stuff…

How to view inside the package

You can view any Windows 8 app package that is installed on your computer as it resides within the following folder:

C:\Program Files\WindowsApps

Each package has it’s own folder within that folder. Here’s the full path to the package folder where the Twitter apps files reside:

C:\Program Files\WindowsApps\9E2F88E3.Twitter_1.0.0.1_x64__wgeqdkkx372wm

The “x64” in the folder indicates that I have the Intel dependent 64-bit version of the app. If you have a Windows RT tablet, then you’ll have a different package that could either just be compiled for ARM or it could be different source code too.

FYI: You wont have permissions to view the contents of the WindowsApp folder by default. You can grant yourself access by opening up this folders Advanced Security Settings dialog and setting your local user or Administrators group as the “Owner” of the folder. This will allow you to peek within without messing up any other permissions related to the folder. However, please do this at your own risk as I cannot take responsibility if you mess anything up.

Twitter App Package Contents

Here’s a screenshot of the root view of the Twitter apps package folder:

Twitter_Win8App_PackageContents

Written in XAML

See all the .xaml files (for example the App.xaml in the screenshot above)? This indicates that the app is written in XAML. I actually suspected that Twitter would write the app using JavaScript. I’m actually slightly surprised to see that they chose to use XAML instead.

Local Data Storage

The app does persist some data local (your recent tweets, etc.) I kind of wondered what they were using to do so,and now I know… The app uses SQLite as gleamed from the sqlite3.dll file.

Open Source

While the app itself is NOT open source, they did decide to utilize a couple open source tools within the app. The tools used are:

  • Callisto – a helpful toolkit containing some utilities and UI controls to help complete your app’s Windows UI style quickly as well as consistent with the Windows UI guidelines.
  • JulMar MVVM Helpers – a set of classes for developers to help them build Model-View-ViewModel oriented applications.
  • WinRT XAML Toolkit – a set of controls, extensions and helper classes for Windows Runtime XAML applications.

Lots of Images

The application also contains quite a few image resources used within it. These images are used for such things as: retweet and favorite indicators, the tweet and search buttons, and more. I’m not surprised they are using images to graphically represent these things. This is something that is pretty typical. If it were JavaScript they would need to, but since it’s XAML they could have written XAML controls to describe these images in a resolution independent manner instead. They likely chose not to since it really is easier to create static images.

Twitter_Win8App_AssetsContents

Twitter_Win8App_PackageContents_UserList

Conclusion

While I didn’t find anything anything really out of the ordinary within the package, I am slightly surprised that they didn’t use JavaScript, as I assume Twitter would. Also, this same technique can be used to peek within any Windows 8 App’s package contents. XAML apps (like this one) are compiled into binary assemblies, so you can not view the full source code directly. However, if the app were written in JavaScript, then you would have the full source code to read.