Top Banner
K-9 Mail for Android Jesse Vincent [email protected]
141
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: K-9 Mail for Android

K-9 Mail for Android

Jesse [email protected]

Page 2: K-9 Mail for Android

Hi!

Page 3: K-9 Mail for Android

I'm Jesse

Page 4: K-9 Mail for Android

I'm a Perl Hacker

Page 5: K-9 Mail for Android

Also, I like to break things

Page 6: K-9 Mail for Android

What is “K-9”?

Page 7: K-9 Mail for Android
Page 8: K-9 Mail for Android

What is “K-9”?

Page 9: K-9 Mail for Android

Email client

Page 10: K-9 Mail for Android

For Android

Page 11: K-9 Mail for Android

Why “K-9”?

Page 12: K-9 Mail for Android

My favorite mail client

Page 13: K-9 Mail for Android

mutt

Page 14: K-9 Mail for Android
Page 15: K-9 Mail for Android

K-9

Page 16: K-9 Mail for Android
Page 17: K-9 Mail for Android

+ =

Page 18: K-9 Mail for Android

Didn't it come with a mail

client?

Page 19: K-9 Mail for Android

No Search

Page 20: K-9 Mail for Android

No “stars”

Page 21: K-9 Mail for Android

No Self-Signed Certificate Support

Page 22: K-9 Mail for Android

No BCC-Self

Page 23: K-9 Mail for Android

No IMAP IDLE

Page 24: K-9 Mail for Android

No multi-select

Page 25: K-9 Mail for Android

No keybindings

Page 26: K-9 Mail for Android

No IMAP Deletes

Page 27: K-9 Mail for Android

I almost returned my new phone

Page 28: K-9 Mail for Android

It's Open Source

Page 29: K-9 Mail for Android

I could fix it

Page 30: K-9 Mail for Android

“How hard could it be?”

Page 31: K-9 Mail for Android

It's all Java

Page 32: K-9 Mail for Android

..the last time I used Java...

Page 33: K-9 Mail for Android

I used Mosaic

Page 34: K-9 Mail for Android

Appletswere new

Page 35: K-9 Mail for Android

Internet Explorer 1.0

was brand new

Page 36: K-9 Mail for Android
Page 37: K-9 Mail for Android

Java is supposed to be

“easy” for newbies

Page 38: K-9 Mail for Android

How hard could it be?

Page 39: K-9 Mail for Android

So I got the code

Page 40: K-9 Mail for Android

git clone git://android.git.kernel.org/platform/packages/apps/Email.git

Page 41: K-9 Mail for Android

Only one change REALLY mattered

Page 42: K-9 Mail for Android

Delete from IMAP Servers

Page 43: K-9 Mail for Android

h--- a/src/com/android/email/MessagingController.java

+++ b/src/com/android/email/MessagingController.java

@@ -455,13 +458,28 @@ public class MessagingController implements Runnable {

for (Message message : remoteMessages) {

Message localMessage = localUidMap.get(message.getUid());

if (localMessage == null ||

(!localMessage.isSet(Flag.X_DOWNLOADED_FULL) &&

+ !localMessage.isSet(Flag.DELETED) &&

!localMessage.isSet(Flag.X_DOWNLOADED_PARTIAL))) {

unsyncedMessages.add(message);

}

}

}

+ for (Message message : localMessages) {

+ Message remoteMessage = remoteUidMap.get(message.getUid());

+ // skip things deleted on the server side

+ if (remoteMessage != null && message.isSet(Flag.DELETED)) {

+ remoteMessage.setFlag(Flag.DELETED, true);

+ }

+ }

Page 44: K-9 Mail for Android

8 loc

Page 45: K-9 Mail for Android

I'm done!

Page 46: K-9 Mail for Android

Building K-9(First time)

Page 47: K-9 Mail for Android

No Makefile

Page 48: K-9 Mail for Android

It's Java

Page 49: K-9 Mail for Android

No build.xml

Page 50: K-9 Mail for Android

“Just build the whole OS”

Page 51: K-9 Mail for Android

No

Page 52: K-9 Mail for Android

10 Hours

Page 53: K-9 Mail for Android

Worked great in emulator

Page 54: K-9 Mail for Android

...but not on a real phone

Page 55: K-9 Mail for Android

For “security”

Page 56: K-9 Mail for Android

What now?

Page 57: K-9 Mail for Android

Submit the change to Android?

Page 58: K-9 Mail for Android

I tried

Page 59: K-9 Mail for Android

They hadn't yet figured out the

whole community thing

Page 60: K-9 Mail for Android

(It's gotten better)

Page 61: K-9 Mail for Android

I like to share

Page 62: K-9 Mail for Android

How to share?

Page 63: K-9 Mail for Android

Fork!

Page 64: K-9 Mail for Android

Fork the OS?!?!

Page 65: K-9 Mail for Android

What did it take to fork?

Page 66: K-9 Mail for Android

Google Code Project

Page 67: K-9 Mail for Android
Page 68: K-9 Mail for Android

What's next?

Page 69: K-9 Mail for Android

Android Developer Account

Page 70: K-9 Mail for Android
Page 71: K-9 Mail for Android

Pay $20 to become an

Android Market Publisher

Page 72: K-9 Mail for Android

Submit a web form

Page 73: K-9 Mail for Android

Wait <10s

Page 74: K-9 Mail for Android

Profit!

Page 75: K-9 Mail for Android

Oh, wait

Page 76: K-9 Mail for Android

(It's free)

Page 77: K-9 Mail for Android

Jesse,

[...]

Please inform Motorola tech of this as they have recommended your program but disavow any knowledge of how to fix it, as you are 3rd party. They did though, suggest I contact godaddy, and they did give me your email, so they weren't completely useless.

ALSO, IT WOULD BE HELPFUL IF YOU SOMEHOW HAD A PHONE NUMBER ON YOUR SITE, and an easier way to contact your tech people.

M. A.

Page 78: K-9 Mail for Android

Writing end-user

software is... different

Page 79: K-9 Mail for Android

What did Google think?

Page 80: K-9 Mail for Android

Some:

Page 81: K-9 Mail for Android

But why couldn't you

submit patches?

Page 82: K-9 Mail for Android

Most:

Page 83: K-9 Mail for Android

Awesome...

Page 84: K-9 Mail for Android

...So, there's this feature I

want...

Page 85: K-9 Mail for Android

K-9 Today

Page 86: K-9 Mail for Android

I have co-conspirators!

Page 87: K-9 Mail for Android

Authors (by commit count)

● 505 jessev

● 256 danapple0

● 143 baolongnt

● 45 cketti

● 31 ismarc31

● 17 young.bradley

● 16 brock.tice

● 5 dumbfile

● 4 tibbetts

● 2 sparrowhawk

● 1 yostinso++

Page 88: K-9 Mail for Android

They write features

Page 89: K-9 Mail for Android

They fix bugs

Page 90: K-9 Mail for Android

They help users

Page 91: K-9 Mail for Android

They make K-9 awesome

Page 92: K-9 Mail for Android

Over 150,000 Downloads

Page 93: K-9 Mail for Android

1500 “Bug” Reports

Page 94: K-9 Mail for Android

App Ecosystem

Page 95: K-9 Mail for Android

K-9 Mail Locale Plugin

Page 96: K-9 Mail for Android

K-9 Data Killer

Page 97: K-9 Mail for Android

Email Popup

Page 98: K-9 Mail for Android

K-9 features

Page 99: K-9 Mail for Android

Updated UI

Page 100: K-9 Mail for Android
Page 101: K-9 Mail for Android

IMAP Push

Page 102: K-9 Mail for Android

Configurable polling

Page 103: K-9 Mail for Android

Multi-folder sync

Page 104: K-9 Mail for Android

“Stars”

Page 105: K-9 Mail for Android
Page 106: K-9 Mail for Android

Multi-select

Page 107: K-9 Mail for Android
Page 108: K-9 Mail for Android

Message Previews

Page 109: K-9 Mail for Android
Page 110: K-9 Mail for Android

BCC-Self

Page 111: K-9 Mail for Android

Signatures

Page 112: K-9 Mail for Android

Multiple Identities

Page 113: K-9 Mail for Android

CRAM-MD5 Auth

Page 114: K-9 Mail for Android

Self-Signed SSL Certificates

Page 115: K-9 Mail for Android
Page 116: K-9 Mail for Android

Keyboard shortcuts

Page 117: K-9 Mail for Android

Full-text search

Page 118: K-9 Mail for Android

Lots more!

Page 119: K-9 Mail for Android

Getting started hacking on K-9

Page 120: K-9 Mail for Android

Get the SDK

Page 121: K-9 Mail for Android

(It's free)

Page 122: K-9 Mail for Android

Linux, OSX or Windows

Page 123: K-9 Mail for Android

http://developer.android.com/sdk

Page 124: K-9 Mail for Android

Create an “AVD”

Page 125: K-9 Mail for Android

android create avd --name Fone --target android-7

Page 126: K-9 Mail for Android

Start the emulator

Page 127: K-9 Mail for Android

emulator -avd Fone

Page 128: K-9 Mail for Android

Checking out the code

Page 129: K-9 Mail for Android

svn co http://k9mail.googlecode.com/svn/k9mail/trunk/ k9

Page 130: K-9 Mail for Android

Create a local.properties

file

Page 131: K-9 Mail for Android

sdk.dir=/home/jesse/android-sdk-linux

Page 132: K-9 Mail for Android

Building K-9

Page 133: K-9 Mail for Android

ant debug

Page 134: K-9 Mail for Android

Getting K-9 to your device

Page 135: K-9 Mail for Android

adb install bin/K9-debug.apk

Page 136: K-9 Mail for Android

Send patches!

Page 137: K-9 Mail for Android

googlecode.com/k9mail

Page 138: K-9 Mail for Android

Time to get hacking!

Page 139: K-9 Mail for Android

Come hack on K9 at Frog Cafe

tomorrow!

Page 140: K-9 Mail for Android

Thanks!

Page 141: K-9 Mail for Android

Questions?

Jesse [email protected]