Repo created
This commit is contained in:
parent
75dc487a7a
commit
39c29d175b
6317 changed files with 388324 additions and 2 deletions
14
backend/demo/build.gradle.kts
Normal file
14
backend/demo/build.gradle.kts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
plugins {
|
||||
id(ThunderbirdPlugins.Library.jvm)
|
||||
alias(libs.plugins.android.lint)
|
||||
alias(libs.plugins.kotlin.serialization)
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(projects.backend.api)
|
||||
implementation(projects.feature.mail.folder.api)
|
||||
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
|
||||
testImplementation(projects.mail.testing)
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.backend.api.BackendStorage
|
||||
import com.fsck.k9.backend.api.FolderInfo
|
||||
import com.fsck.k9.backend.api.updateFolders
|
||||
import net.thunderbird.feature.mail.folder.api.FOLDER_DEFAULT_PATH_DELIMITER
|
||||
import net.thunderbird.feature.mail.folder.api.FolderPathDelimiter
|
||||
|
||||
internal class CommandRefreshFolderList(
|
||||
private val backendStorage: BackendStorage,
|
||||
private val demoStore: DemoStore,
|
||||
) {
|
||||
|
||||
fun refreshFolderList(): FolderPathDelimiter? {
|
||||
val localFolderServerIds = backendStorage.getFolderServerIds().toSet()
|
||||
|
||||
backendStorage.updateFolders {
|
||||
val remoteFolderServerIds = demoStore.getFolderIds()
|
||||
val foldersServerIdsToCreate = remoteFolderServerIds - localFolderServerIds
|
||||
val foldersToCreate = foldersServerIdsToCreate.mapNotNull { folderServerId ->
|
||||
demoStore.getFolder(folderServerId)?.let { folderData ->
|
||||
FolderInfo(folderServerId, folderData.name, folderData.type)
|
||||
}
|
||||
}
|
||||
createFolders(foldersToCreate)
|
||||
|
||||
val folderServerIdsToRemove = (localFolderServerIds - remoteFolderServerIds).toList()
|
||||
deleteFolders(folderServerIdsToRemove)
|
||||
}
|
||||
|
||||
return FOLDER_DEFAULT_PATH_DELIMITER
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import app.k9mail.backend.demo.DemoHelper.createNewServerId
|
||||
import com.fsck.k9.backend.api.BackendStorage
|
||||
import com.fsck.k9.mail.Message
|
||||
import com.fsck.k9.mail.MessageDownloadState
|
||||
import com.fsck.k9.mail.internet.MimeMessage
|
||||
import java.io.ByteArrayInputStream
|
||||
import java.io.ByteArrayOutputStream
|
||||
|
||||
internal class CommandSendMessage(
|
||||
private val backendStorage: BackendStorage,
|
||||
private val demoStore: DemoStore,
|
||||
) {
|
||||
|
||||
fun sendMessage(message: Message) {
|
||||
val inboxServerId = demoStore.getInboxFolderId()
|
||||
val backendFolder = backendStorage.getFolder(inboxServerId)
|
||||
|
||||
val newMessage = message.copy(uid = createNewServerId())
|
||||
backendFolder.saveMessage(newMessage, MessageDownloadState.FULL)
|
||||
}
|
||||
|
||||
private fun Message.copy(uid: String): MimeMessage {
|
||||
val outputStream = ByteArrayOutputStream()
|
||||
writeTo(outputStream)
|
||||
val inputStream = ByteArrayInputStream(outputStream.toByteArray())
|
||||
return MimeMessage.parseMimeMessage(inputStream, false).apply {
|
||||
this.uid = uid
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.backend.api.BackendFolder.MoreMessages
|
||||
import com.fsck.k9.backend.api.BackendStorage
|
||||
import com.fsck.k9.backend.api.SyncListener
|
||||
import com.fsck.k9.mail.MessageDownloadState
|
||||
|
||||
internal class CommandSync(
|
||||
private val backendStorage: BackendStorage,
|
||||
private val demoStore: DemoStore,
|
||||
) {
|
||||
|
||||
fun sync(folderServerId: String, listener: SyncListener) {
|
||||
listener.syncStarted(folderServerId)
|
||||
|
||||
val folder = demoStore.getFolder(folderServerId)
|
||||
if (folder == null) {
|
||||
listener.syncFailed(folderServerId, "Folder $folderServerId doesn't exist", null)
|
||||
return
|
||||
}
|
||||
|
||||
val backendFolder = backendStorage.getFolder(folderServerId)
|
||||
|
||||
val localMessageServerIds = backendFolder.getMessageServerIds()
|
||||
if (localMessageServerIds.isNotEmpty()) {
|
||||
listener.syncFinished(folderServerId)
|
||||
return
|
||||
}
|
||||
|
||||
for (messageServerId in folder.messageServerIds) {
|
||||
val message = demoStore.getMessage(folderServerId, messageServerId)
|
||||
backendFolder.saveMessage(message, MessageDownloadState.FULL)
|
||||
listener.syncNewMessage(folderServerId, messageServerId, isOldMessage = false)
|
||||
}
|
||||
|
||||
backendFolder.setMoreMessages(MoreMessages.FALSE)
|
||||
|
||||
listener.syncFinished(folderServerId)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import app.k9mail.backend.demo.DemoHelper.createNewServerId
|
||||
import com.fsck.k9.backend.api.Backend
|
||||
import com.fsck.k9.backend.api.BackendPusher
|
||||
import com.fsck.k9.backend.api.BackendPusherCallback
|
||||
import com.fsck.k9.backend.api.BackendStorage
|
||||
import com.fsck.k9.backend.api.SyncConfig
|
||||
import com.fsck.k9.backend.api.SyncListener
|
||||
import com.fsck.k9.mail.BodyFactory
|
||||
import com.fsck.k9.mail.Flag
|
||||
import com.fsck.k9.mail.Message
|
||||
import com.fsck.k9.mail.Part
|
||||
import net.thunderbird.feature.mail.folder.api.FolderPathDelimiter
|
||||
|
||||
class DemoBackend(
|
||||
private val backendStorage: BackendStorage,
|
||||
) : Backend {
|
||||
private val demoStore by lazy { DemoStore() }
|
||||
|
||||
private val commandSync by lazy { CommandSync(backendStorage, demoStore) }
|
||||
private val commandRefreshFolderList by lazy { CommandRefreshFolderList(backendStorage, demoStore) }
|
||||
private val commandSendMessage by lazy { CommandSendMessage(backendStorage, demoStore) }
|
||||
|
||||
override val supportsFlags: Boolean = true
|
||||
override val supportsExpunge: Boolean = false
|
||||
override val supportsMove: Boolean = true
|
||||
override val supportsCopy: Boolean = true
|
||||
override val supportsUpload: Boolean = true
|
||||
override val supportsTrashFolder: Boolean = true
|
||||
override val supportsSearchByDate: Boolean = false
|
||||
override val supportsFolderSubscriptions: Boolean = false
|
||||
override val isPushCapable: Boolean = false
|
||||
|
||||
override fun refreshFolderList(): FolderPathDelimiter? {
|
||||
return commandRefreshFolderList.refreshFolderList()
|
||||
}
|
||||
|
||||
override fun sync(folderServerId: String, syncConfig: SyncConfig, listener: SyncListener) {
|
||||
commandSync.sync(folderServerId, listener)
|
||||
}
|
||||
|
||||
override fun downloadMessage(syncConfig: SyncConfig, folderServerId: String, messageServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun downloadMessageStructure(folderServerId: String, messageServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun downloadCompleteMessage(folderServerId: String, messageServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun setFlag(folderServerId: String, messageServerIds: List<String>, flag: Flag, newState: Boolean) = Unit
|
||||
|
||||
override fun markAllAsRead(folderServerId: String) = Unit
|
||||
|
||||
override fun expunge(folderServerId: String) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun deleteMessages(folderServerId: String, messageServerIds: List<String>) = Unit
|
||||
|
||||
override fun deleteAllMessages(folderServerId: String) = Unit
|
||||
|
||||
override fun moveMessages(
|
||||
sourceFolderServerId: String,
|
||||
targetFolderServerId: String,
|
||||
messageServerIds: List<String>,
|
||||
): Map<String, String> {
|
||||
// We do just enough to simulate a successful operation on the server.
|
||||
return messageServerIds.associateWith { createNewServerId() }
|
||||
}
|
||||
|
||||
override fun moveMessagesAndMarkAsRead(
|
||||
sourceFolderServerId: String,
|
||||
targetFolderServerId: String,
|
||||
messageServerIds: List<String>,
|
||||
): Map<String, String> {
|
||||
// We do just enough to simulate a successful operation on the server.
|
||||
return messageServerIds.associateWith { createNewServerId() }
|
||||
}
|
||||
|
||||
override fun copyMessages(
|
||||
sourceFolderServerId: String,
|
||||
targetFolderServerId: String,
|
||||
messageServerIds: List<String>,
|
||||
): Map<String, String> {
|
||||
// We do just enough to simulate a successful operation on the server.
|
||||
return messageServerIds.associateWith { createNewServerId() }
|
||||
}
|
||||
|
||||
override fun search(
|
||||
folderServerId: String,
|
||||
query: String?,
|
||||
requiredFlags: Set<Flag>?,
|
||||
forbiddenFlags: Set<Flag>?,
|
||||
performFullTextSearch: Boolean,
|
||||
): List<String> {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun fetchPart(folderServerId: String, messageServerId: String, part: Part, bodyFactory: BodyFactory) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun findByMessageId(folderServerId: String, messageId: String): String? {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun uploadMessage(folderServerId: String, message: Message): String {
|
||||
return createNewServerId()
|
||||
}
|
||||
|
||||
override fun sendMessage(message: Message) {
|
||||
commandSendMessage.sendMessage(message)
|
||||
}
|
||||
|
||||
override fun createPusher(callback: BackendPusherCallback): BackendPusher {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.mail.Message
|
||||
import com.fsck.k9.mail.internet.MimeMessage
|
||||
import java.io.InputStream
|
||||
import kotlinx.serialization.ExperimentalSerializationApi
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.json.decodeFromStream
|
||||
|
||||
internal class DemoDataLoader {
|
||||
|
||||
@OptIn(ExperimentalSerializationApi::class)
|
||||
fun loadFolders(): DemoFolders {
|
||||
return getResourceAsStream("/contents.json").use { inputStream ->
|
||||
Json.decodeFromStream<DemoFolders>(inputStream)
|
||||
}
|
||||
}
|
||||
|
||||
fun loadMessage(folderServerId: String, messageServerId: String): Message {
|
||||
return getResourceAsStream("/$folderServerId/$messageServerId.eml").use { inputStream ->
|
||||
MimeMessage.parseMimeMessage(inputStream, false).apply {
|
||||
uid = messageServerId
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getResourceAsStream(name: String): InputStream {
|
||||
return this.javaClass.getResourceAsStream(name) ?: error("Resource '$name' not found")
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.mail.FolderType
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
internal data class DemoFolder(
|
||||
val name: String,
|
||||
val type: FolderType,
|
||||
val messageServerIds: List<String>,
|
||||
val subFolders: DemoFolders? = null,
|
||||
)
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
internal typealias DemoFolders = Map<String, DemoFolder>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
internal object DemoHelper {
|
||||
fun createNewServerId() = UUID.randomUUID().toString()
|
||||
}
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
package app.k9mail.backend.demo
|
||||
|
||||
import com.fsck.k9.mail.FolderType
|
||||
import com.fsck.k9.mail.Message
|
||||
|
||||
internal class DemoStore(
|
||||
private val demoDataLoader: DemoDataLoader = DemoDataLoader(),
|
||||
) {
|
||||
private val demoFolders: DemoFolders by lazy { flattenDemoFolders(demoDataLoader.loadFolders()) }
|
||||
|
||||
fun getFolder(folderServerId: String): DemoFolder? {
|
||||
return demoFolders[folderServerId]
|
||||
}
|
||||
|
||||
fun getFolderIds(): Set<String> {
|
||||
return demoFolders.keys
|
||||
}
|
||||
|
||||
fun getInboxFolderId(): String {
|
||||
return demoFolders.filterValues { it.type == FolderType.INBOX }.keys.first()
|
||||
}
|
||||
|
||||
fun getMessage(folderServerId: String, messageServerId: String): Message {
|
||||
return demoDataLoader.loadMessage(folderServerId, messageServerId)
|
||||
}
|
||||
|
||||
// This is a workaround for the fact that the backend doesn't support nested folders
|
||||
private fun flattenDemoFolders(
|
||||
demoFolders: DemoFolders,
|
||||
parentName: String = "",
|
||||
parentServerId: String = "",
|
||||
): DemoFolders {
|
||||
val flatFolders = mutableMapOf<String, DemoFolder>()
|
||||
for ((folderServerId, demoFolder) in demoFolders) {
|
||||
val fullName = if (parentName.isEmpty()) {
|
||||
demoFolder.name
|
||||
} else {
|
||||
"$parentName/${demoFolder.name}"
|
||||
}
|
||||
val fullServerId = if (parentServerId.isEmpty()) {
|
||||
folderServerId
|
||||
} else {
|
||||
"$parentServerId/$folderServerId"
|
||||
}
|
||||
flatFolders[fullServerId] = demoFolder.copy(name = fullName)
|
||||
|
||||
val subFolders = demoFolder.subFolders
|
||||
if (subFolders != null) {
|
||||
flatFolders.putAll(flattenDemoFolders(demoFolder.subFolders, fullName, fullServerId))
|
||||
}
|
||||
}
|
||||
return flatFolders
|
||||
}
|
||||
}
|
||||
88
backend/demo/src/main/resources/contents.json
Normal file
88
backend/demo/src/main/resources/contents.json
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
{
|
||||
"inbox": {
|
||||
"name": "Inbox",
|
||||
"type": "INBOX",
|
||||
"messageServerIds": [
|
||||
"intro",
|
||||
"many_recipients",
|
||||
"thread_1",
|
||||
"thread_2",
|
||||
"inline_image_data_uri",
|
||||
"inline_image_attachment",
|
||||
"localpart_exceeds_length_limit"
|
||||
]
|
||||
},
|
||||
"trash": {
|
||||
"name": "Trash",
|
||||
"type": "TRASH",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"drafts": {
|
||||
"name": "Drafts",
|
||||
"type": "DRAFTS",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"sent": {
|
||||
"name": "Sent",
|
||||
"type": "SENT",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"archive": {
|
||||
"name": "Archive",
|
||||
"type": "ARCHIVE",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"spam": {
|
||||
"name": "Spam",
|
||||
"type": "SPAM",
|
||||
"messageServerIds": []
|
||||
},
|
||||
"turing": {
|
||||
"name": "Turing Awards",
|
||||
"type": "REGULAR",
|
||||
"messageServerIds": [
|
||||
"turing_award_1966",
|
||||
"turing_award_1967",
|
||||
"turing_award_1968",
|
||||
"turing_award_1970",
|
||||
"turing_award_1971",
|
||||
"turing_award_1972",
|
||||
"turing_award_1975",
|
||||
"turing_award_1977",
|
||||
"turing_award_1978",
|
||||
"turing_award_1979",
|
||||
"turing_award_1981",
|
||||
"turing_award_1983",
|
||||
"turing_award_1987",
|
||||
"turing_award_1991",
|
||||
"turing_award_1996"
|
||||
]
|
||||
},
|
||||
"nested": {
|
||||
"name": "Nested",
|
||||
"type": "REGULAR",
|
||||
"messageServerIds": [
|
||||
"nested_1"
|
||||
],
|
||||
"subFolders": {
|
||||
"nested_level_1": {
|
||||
"name": "Nested Level 1",
|
||||
"type": "REGULAR",
|
||||
"messageServerIds": [
|
||||
"nested_level_1_1",
|
||||
"nested_level_1_2"
|
||||
],
|
||||
"subFolders": {
|
||||
"nested_level_2": {
|
||||
"name": "Nested Level 2",
|
||||
"type": "REGULAR",
|
||||
"messageServerIds": [
|
||||
"nested_level_2_1",
|
||||
"nested_level_2_2"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,332 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Test data" <data@example.com>
|
||||
Date: Tue, 14 Feb 2023 15:00:00 +0100
|
||||
Message-ID: <inbox-6@example.com>
|
||||
Subject: Inline image attachment
|
||||
To: User <user@example.com>
|
||||
Content-Type: multipart/related; boundary=BOUNDARY
|
||||
|
||||
--BOUNDARY
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
|
||||
<html>
|
||||
<body>
|
||||
<p>Inline image using a cid: URI to reference an attached image:</p>
|
||||
|
||||
<img src="cid:part1@example.com">
|
||||
</body>
|
||||
</html>
|
||||
--BOUNDARY
|
||||
Content-Type: image/png; name="thunderbird.png"
|
||||
Content-Transfer-Encoding: base64
|
||||
Content-ID: <part1@example.com>
|
||||
Content-Disposition: inline; filename="thunderbird.png"
|
||||
|
||||
iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAEtWlUWHRYTUw6Y29tLmFkb2JlLnht
|
||||
cAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
|
||||
Pz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUg
|
||||
NS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
|
||||
LXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1s
|
||||
bnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJo
|
||||
dHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDov
|
||||
L25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFk
|
||||
b2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh
|
||||
cC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9z
|
||||
VHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjEyOCIKICAgZXhp
|
||||
ZjpQaXhlbFlEaW1lbnNpb249IjEyOCIKICAgZXhpZjpDb2xvclNwYWNlPSIxIgogICB0aWZmOklt
|
||||
YWdlV2lkdGg9IjEyOCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMTI4IgogICB0aWZmOlJlc29sdXRp
|
||||
b25Vbml0PSIyIgogICB0aWZmOlhSZXNvbHV0aW9uPSI3Mi8xIgogICB0aWZmOllSZXNvbHV0aW9u
|
||||
PSI3Mi8xIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmls
|
||||
ZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTAzLTA0VDE5OjEy
|
||||
OjU5KzAxOjAwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDI1LTAzLTA0VDE5OjEyOjU5KzAxOjAw
|
||||
Ij4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0
|
||||
RXZ0OmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5
|
||||
IFBob3RvIDIgMi42LjAiCiAgICAgIHN0RXZ0OndoZW49IjIwMjUtMDMtMDRUMTk6MTI6NTkrMDE6
|
||||
MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0
|
||||
aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/PkBqBbkAAAGB
|
||||
aUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRzytEURTHPzNDxAixUCwmYTU0fjSxUUZCSdMYZbCZ
|
||||
eTNvRs2P13szabJVtooSG78W/AVslbVSRErWbIkNes6bUTPJnNu553O/957TveeCPZhUUkaVB1Lp
|
||||
rB6Y9LkWQouumhccVNHMEO1hxdDG/P4ZKtrHHTYr3vRatSqf+9fqozFDAVut8Kii6VnhKeGZ1axm
|
||||
8bZwq5IIR4VPhd26XFD41tIjRX62OF7kL4v1YGAc7E3CrngZR8pYSegpYXk5XalkTvm9j/USZyw9
|
||||
PyexU7wDgwCT+HAxzQTjeOlnRGYvvQzQJysq5HsK+bNkJFeRWSOPzgpxEmRxi5qT6jGJqugxGUny
|
||||
Vv//9tVQBweK1Z0+qH4yzbduqNmC703T/Dw0ze8jcDzCRbqUnzmA4XfRN0ta1z40rsPZZUmL7MD5
|
||||
BrQ9aGE9XJAc4nZVhdcTaAhByzXULRV79rvP8T0E1+SrrmB3D3rkfOPyD2DqZ+MT1h/FAAAACXBI
|
||||
WXMAAAsTAAALEwEAmpwYAAAgAElEQVR4nO29ebwmRXkv/q3qftfznn3OmY0BZoYBAdnRxKDmZxIQ
|
||||
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
|
||||
--BOUNDARY--
|
||||
File diff suppressed because one or more lines are too long
9
backend/demo/src/main/resources/inbox/intro.eml
Normal file
9
backend/demo/src/main/resources/inbox/intro.eml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Thunderbird" <thunderbird@example.com>
|
||||
Date: Thu, 23 Sep 2021 23:42:00 +0200
|
||||
Message-ID: <hello-1-2-3@example.com>
|
||||
Subject: Welcome to Thunderbird for Android
|
||||
To: User <user@example.com>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Congratulations, you have managed to set up Thunderbird for Android's demo account. Have fun exploring the app.
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
MIME-Version: 1.0
|
||||
From: Sender <aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffggggg@example.com> (local part exceeds maximum length)
|
||||
Date: Thu, 15 Jun 2023 18:00:00 +0200
|
||||
Message-ID: <localpart@example.com>
|
||||
Subject: Localpart of email address exceeds 64 characters
|
||||
To: User <user@example.com>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
You should still be able to read this message.
|
||||
42
backend/demo/src/main/resources/inbox/many_recipients.eml
Normal file
42
backend/demo/src/main/resources/inbox/many_recipients.eml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Alice" <from1@example.com>, "Bob" <from2@example.com>
|
||||
Sender: "Bernd" <sender@example.com>
|
||||
Reply-To: <reply-to@example.com>
|
||||
Date: Mon, 23 Jan 2023 12:00:00 +0100
|
||||
Message-ID: <inbox-2@example.com>
|
||||
Subject: Message details demo
|
||||
To: "User 1" <to1@example.com>,
|
||||
"User 2" <to2@example.com>,
|
||||
"User 3" <to3@example.com>,
|
||||
"User 4" <to4@example.com>,
|
||||
"User 5" <to5@example.com>,
|
||||
"User 6" <to6@example.com>,
|
||||
"User 7" <to7@example.com>,
|
||||
"User 8" <to8@example.com>,
|
||||
"User 9" <to9@example.com>,
|
||||
"User 10" <to10@example.com>,
|
||||
"User 11" <to11@example.com>,
|
||||
"User 12" <to12@example.com>,
|
||||
"User 13" <to13@example.com>,
|
||||
"User 14" <to14@example.com>,
|
||||
"User 15" <to15@example.com>,
|
||||
"User 16" <to16@example.com>,
|
||||
"User 17" <to17@example.com>,
|
||||
"User 18" <to18@e10.example.com>,
|
||||
"User 19" <to19@e11.example.com>,
|
||||
"User 20" <to20@e12.example.com>
|
||||
Cc: "Copy 1" <cc1@example.com>,
|
||||
"Copy 2" <cc2@example.com>,
|
||||
"Copy 3" <cc3@example.com>
|
||||
Bcc: "Blind 1" <bcc1@example.com>,
|
||||
"Blind 2" <bcc2@example.com>,
|
||||
"Blind 3" <bcc3@example.com>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This message contains…
|
||||
- multiple addresses in the From: header
|
||||
- a Sender: header
|
||||
- a Reply-To: header
|
||||
- multiple addresses in the To: header
|
||||
- multiple addresses in the Cc: header
|
||||
- multiple addresses in the Bcc: header
|
||||
9
backend/demo/src/main/resources/inbox/thread_1.eml
Normal file
9
backend/demo/src/main/resources/inbox/thread_1.eml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
MIME-Version: 1.0
|
||||
From: Alice <alice@example.com>
|
||||
Date: Fri, 10 Feb 2023 10:00:00 +0100
|
||||
Message-ID: <thread-1@example.com>
|
||||
Subject: Thread
|
||||
To: Bob <bob@example.com>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is the first message in this thread.
|
||||
11
backend/demo/src/main/resources/inbox/thread_2.eml
Normal file
11
backend/demo/src/main/resources/inbox/thread_2.eml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
MIME-Version: 1.0
|
||||
From: Bob <bob@example.com>
|
||||
Date: Fri, 10 Feb 2023 10:05:00 +0100
|
||||
Message-ID: <thread-2@example.com>
|
||||
Subject: Re: Thread
|
||||
To: Alice <alice@example.com>
|
||||
In-Reply-To: <thread-1@example.com>
|
||||
References: <thread-2@example.com>
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is the second message in this thread.
|
||||
20
backend/demo/src/main/resources/nested/nested_1.eml
Normal file
20
backend/demo/src/main/resources/nested/nested_1.eml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Nested User" <nested@example.com>
|
||||
Date: Mon, 01 Jan 2024 12:00:00 -0400
|
||||
Message-ID: <nested_1@example.com>
|
||||
Subject: Nested Message
|
||||
To: User <user@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is a message in the Nested folder.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>This is a message in the Nested folder.</div></div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Nested Level 1 User" <nested.level1@example.com>
|
||||
Date: Mon, 01 Jan 2024 12:00:00 -0400
|
||||
Message-ID: <nested_level_1_1@example.com>
|
||||
Subject: Nested Level 1 Message
|
||||
To: Nested Level 2 User <nested.level2@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is a message 1 in the Nested Level 1 folder.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>This is a message in the Nested Level 1 folder.</div></div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Nested Level 1 User" <nested.level1@example.com>
|
||||
Date: Mon, 01 Jan 2024 12:00:00 -0400
|
||||
Message-ID: <nested_level_1_2@example.com>
|
||||
Subject: Nested Level 1 Message
|
||||
To: Nested Level 2 User <nested.level2@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is a message 2 in the Nested Level 1 folder.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>This is a message in the Nested Level 1 folder.</div></div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Nested Level 2 User" <nested.level2@example.com>
|
||||
Date: Mon, 01 Jan 2024 12:00:00 -0400
|
||||
Message-ID: <nested_level_2_1@example.com>
|
||||
Subject: Nested Level 2 Message
|
||||
To: Nested Level 1 User <nested.level1@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is a message 1 in the Nested Level 2 folder.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>This is a message in the Nested Level 2 folder.</div></div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Nested Level 2 User" <nested.level2@example.com>
|
||||
Date: Mon, 01 Jan 2024 12:00:00 -0400
|
||||
Message-ID: <nested_level_2_2@example.com>
|
||||
Subject: Nested Level 2 Message
|
||||
To: Nested Level 1 User <nested.level1@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
This is a message 2 in the Nested Level 2 folder.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>This is a message in the Nested Level 2 folder.</div></div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
84
backend/demo/src/main/resources/turing/turing_award_1966.eml
Normal file
84
backend/demo/src/main/resources/turing/turing_award_1966.eml
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Alan J. Perlis" <alan.perlis@example.com>
|
||||
Date: Sat, 01 Jan 1966 12:00:00 -0400
|
||||
Message-ID: <turing1966@example.com>
|
||||
Subject: The Synthesis of Algorithmic Systems
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b100959e604d85a5320
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Both knowledge and wisdom extend man's reach. Knowledge led to computers,
|
||||
wisdom to chopsticks. Unfortunately our association is overinvolved with
|
||||
the former. The latter will have to wait for a more sublime day.
|
||||
On what does and will the fame of Turing rest? That he proved a theorem
|
||||
showing that for a general computing device--later dubbed a "Turing
|
||||
machine"--there existed functions which it could not compute? I doubt it.
|
||||
More likely it rests on the model he invented and employed: his formal
|
||||
mechanism.
|
||||
This model has captured the imagination and mobilized the thoughts of a
|
||||
generation of scientists. It has provided a basis for arguments leading to
|
||||
theories. His model has proved so useful that its generated activity has
|
||||
been distributed not only in mathematics, but through several technologies
|
||||
as well. The arguments that have been employed are not always formal and
|
||||
the consequent creations not all abstract.
|
||||
Indeed a most fruitful consequence of the Turing machine has been with the
|
||||
creation, study and computation of functions which are computable, i.e., in
|
||||
computer programming. This is not surprising since computers can compute so
|
||||
much more than we yet know how to specify.
|
||||
I am sure that all will agree that this model has been enormously valuable.
|
||||
History will forgive me for not devoting any attention in this lecture to
|
||||
the effect which Turing had on the development of the general-purpose
|
||||
digital computer, which has further accelerated our involvement with the
|
||||
theory and practice of computation.
|
||||
Since the appearance of Turing's model there have, of course, been others
|
||||
which have concerned and benefited us in computing. I think, however, that
|
||||
only one has had an effect as great as Turing's: the formal mechanism
|
||||
called ALGOL Many will immediately disagree, pointing out that too few of
|
||||
us have understood it or used it.
|
||||
While such has, unhappily, been the case, it is not the point. The impulse
|
||||
given by ALGOL to the development of research in computer science is
|
||||
relevant while the number of adherents is not. ALGOL, too, has mobilized
|
||||
our thoughts and has provided us with a basis for our arguments.
|
||||
|
||||
--047d7b450b100959e604d85a5320
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Both knowledge and wisdom extend man's reach. Kno=
|
||||
wledge led to computers, wisdom to chopsticks. Unfortunately our associatio=
|
||||
n is overinvolved with the former. The latter will have to wait for a more =
|
||||
sublime day.=C2=A0</div>
|
||||
<div>On what does and will the fame of Turing rest? That he proved a theore=
|
||||
m showing that for a general computing device--later dubbed a "Turing =
|
||||
machine"--there existed functions which it could not compute? I doubt =
|
||||
it. More likely it rests on the model he invented and employed: his formal =
|
||||
mechanism.=C2=A0</div>
|
||||
<div>This model has captured the imagination and mobilized the thoughts of =
|
||||
a generation of scientists. It has provided a basis for arguments leading t=
|
||||
o theories. His model has proved so useful that its generated activity has =
|
||||
been distributed not only in mathematics, but through several technologies =
|
||||
as well. The arguments that have been employed are not always formal and th=
|
||||
e consequent creations not all abstract.=C2=A0</div>
|
||||
<div>Indeed a most fruitful consequence of the Turing machine has been with=
|
||||
the creation, study and computation of functions which are computable, i.e=
|
||||
., in computer programming. This is not surprising since computers can comp=
|
||||
ute so much more than we yet know how to specify.=C2=A0</div>
|
||||
<div>I am sure that all will agree that this model has been enormously valu=
|
||||
able. History will forgive me for not devoting any attention in this lectur=
|
||||
e to the effect which Turing had on the development of the general-purpose =
|
||||
digital computer, which has further accelerated our involvement with the th=
|
||||
eory and practice of computation.=C2=A0</div>
|
||||
<div>Since the appearance of Turing's model there have, of course, been=
|
||||
others which have concerned and benefited us in computing. I think, howeve=
|
||||
r, that only one has had an effect as great as Turing's: the formal mec=
|
||||
hanism called ALGOL Many will immediately disagree, pointing out that too f=
|
||||
ew of us have understood it or used it.=C2=A0</div>
|
||||
<div>While such has, unhappily, been the case, it is not the point. The imp=
|
||||
ulse given by ALGOL to the development of research in computer science is r=
|
||||
elevant while the number of adherents is not. ALGOL, too, has mobilized our=
|
||||
thoughts and has provided us with a basis for our arguments.=C2=A0</div>
|
||||
</div>
|
||||
|
||||
--047d7b450b100959e604d85a5320--
|
||||
35
backend/demo/src/main/resources/turing/turing_award_1967.eml
Normal file
35
backend/demo/src/main/resources/turing/turing_award_1967.eml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Maurice V. Wilkes" <maurice.wilkes@example.com>
|
||||
Date: Wed, 30 Aug 1967 12:00:00 -0400
|
||||
Message-ID: <turing1967@example.com>
|
||||
Subject: Computers Then and Now
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b5d9bdd0d571a04d85aec30
|
||||
|
||||
--047d7b5d9bdd0d571a04d85aec30
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
I do not imagine that many of the Turing lecturers who will follow me will
|
||||
be people who were acquainted with Alan Turing. The work on computable
|
||||
numbers, for which he is famous, was published in 1936 before digital
|
||||
computers existed. Later he became one of the first of a distinguished
|
||||
succession of able mathematicians who have made contributions to the
|
||||
computer field. He was a colorful figure in the early days of digital
|
||||
computer development in England, and I would find it difficult to speak of
|
||||
that period without making some references to him.
|
||||
|
||||
--047d7b5d9bdd0d571a04d85aec30
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>I do not imagine that many of the Turing lecturers wh=
|
||||
o will follow me will be people who were acquainted with Alan Turing. The w=
|
||||
ork on computable numbers, for which he is famous, was published in 1936 be=
|
||||
fore digital computers existed. Later he became one of the first of a disti=
|
||||
nguished succession of able mathematicians who have made contributions to t=
|
||||
he computer field. He was a colorful figure in the early days of digital co=
|
||||
mputer development in England, and I would find it difficult to speak of th=
|
||||
at period without making some references to him.</div>
|
||||
</div>
|
||||
|
||||
--047d7b5d9bdd0d571a04d85aec30--
|
||||
40
backend/demo/src/main/resources/turing/turing_award_1968.eml
Normal file
40
backend/demo/src/main/resources/turing/turing_award_1968.eml
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
MIME-Version: 1.0
|
||||
From: Richard Hamming <richard.hamming@example.com>
|
||||
Date: Tue, 27 Aug 1968 12:00:00 -0400
|
||||
Message-ID: <turing1968@example.com>
|
||||
Subject: One Man's View of Computer Science
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=089e01227b30f6f60004d85af2ae
|
||||
|
||||
--089e01227b30f6f60004d85af2ae
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Let me begin with a few personal words. When one is notified that he has
|
||||
been elected the ACM Turing lecturer for the year, he is at first
|
||||
surprised--especially is the nonacademic person surprised by an ACM award.
|
||||
After a little while the surprise is replaced by a feeling of pleasure.
|
||||
Still later comes a feeling of "Why me?" With all that has been done and is
|
||||
being done in computing, why single out me and my work? Well, I suppose
|
||||
that it has to happen to someone each year, and this
|
||||
time I am the lucky person. Anyway, let me thank you for the honor you have
|
||||
given to me and by inference to the Bell Telephone Laboratories where I
|
||||
work and which has made possible so much of what I have done.
|
||||
|
||||
--089e01227b30f6f60004d85af2ae
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Let me begin with a few personal words. When one is n=
|
||||
otified that he has been elected the ACM Turing lecturer for the year, he i=
|
||||
s at first surprised--especially is the nonacademic person surprised by an =
|
||||
ACM award. After a little while the surprise is replaced by a feeling of pl=
|
||||
easure. Still later comes a feeling of "Why me?" With all that ha=
|
||||
s been done and is being done in computing, why single out me and my work? =
|
||||
Well, I suppose that it has to happen to someone each year, and this=C2=A0<=
|
||||
/div>
|
||||
<div>time I am the lucky person. Anyway, let me thank you for the honor you=
|
||||
have given to me and by inference to the Bell Telephone Laboratories where=
|
||||
I work and which has made possible so much of what I have done.</div></div=
|
||||
>
|
||||
|
||||
--089e01227b30f6f60004d85af2ae--
|
||||
35
backend/demo/src/main/resources/turing/turing_award_1970.eml
Normal file
35
backend/demo/src/main/resources/turing/turing_award_1970.eml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
MIME-Version: 1.0
|
||||
From: "James H. Wilkinson" <james.wilkinson@example.com>
|
||||
Date: Tue, 01 Sep 1970 12:00:00 -0400
|
||||
Message-ID: <turing1970@example.com>
|
||||
Subject: Some Comments from a Numerical Analyst
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b5d9bdd9697d504d85ac65f
|
||||
|
||||
--047d7b5d9bdd9697d504d85ac65f
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
When at last I recovered from the feeling of shocked elation at being
|
||||
invited to give the 1970 Turing Award Lecture, I became aware that I must
|
||||
indeed prepare an appropriate lecture. There appears to be a tradition that
|
||||
a Turing Lecturer should decide for himself what is expected from him, and
|
||||
probably for this reason previous lectures have differed considerably in
|
||||
style and content. However, it was made quite clear that I was to give an
|
||||
after-luncheon speech and that I would not have the benefit of an overhead
|
||||
projector or a blackboard.
|
||||
|
||||
--047d7b5d9bdd9697d504d85ac65f
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>When at last I recovered from the feeling of shocked =
|
||||
elation at being invited to give the 1970 Turing Award Lecture, I became aw=
|
||||
are that I must indeed prepare an appropriate lecture. There appears to be =
|
||||
a tradition that a Turing Lecturer should decide for himself what is expect=
|
||||
ed from him, and probably for this reason previous lectures have differed c=
|
||||
onsiderably in style and content. However, it was made quite clear that I w=
|
||||
as to give an after-luncheon speech and that I would not have the benefit o=
|
||||
f an overhead projector or a blackboard.</div>
|
||||
</div>
|
||||
|
||||
--047d7b5d9bdd9697d504d85ac65f--
|
||||
32
backend/demo/src/main/resources/turing/turing_award_1971.eml
Normal file
32
backend/demo/src/main/resources/turing/turing_award_1971.eml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
MIME-Version: 1.0
|
||||
From: John McCarthy <john.mccarthy@example.com>
|
||||
Date: Fri, 01 Jan 1971 12:00:00 -0400
|
||||
Message-ID: <turing1971@example.com>
|
||||
Subject: Generality in Artificial Intelligence
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=089e01030106b6942904d85ad870
|
||||
|
||||
--089e01030106b6942904d85ad870
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Postscript
|
||||
My 1971 Turing Award Lecture was entitled "Generality in Artificial
|
||||
Intelligence." The topic turned out to have been overambitious in that I
|
||||
discovered that I was unable to put my thoughts on the subject in a
|
||||
satisfactory written form at that time. It would have been better to have
|
||||
reviewed previous work rather than attempt something new, but such wasn't
|
||||
my custom at that time.
|
||||
|
||||
--089e01030106b6942904d85ad870
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Postscript</div><div>My 1971 Turing Award Lecture was=
|
||||
entitled "Generality in Artificial Intelligence." The topic turn=
|
||||
ed out to have been overambitious in that I discovered that I was unable to=
|
||||
put my thoughts on the subject in a satisfactory written form at that time=
|
||||
. It would have been better to have reviewed previous work rather than atte=
|
||||
mpt something new, but such wasn't my custom at that time.</div>
|
||||
</div>
|
||||
|
||||
--089e01030106b6942904d85ad870--
|
||||
27
backend/demo/src/main/resources/turing/turing_award_1972.eml
Normal file
27
backend/demo/src/main/resources/turing/turing_award_1972.eml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Edsger W. Dijkstra" <edsger.dijkstra@example.com>
|
||||
Date: Mon, 02 Aug 1972 12:00:00 -0500
|
||||
Message-ID: <turing1972@example.com>
|
||||
Subject: The Humble Programmer
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: text/plain; charset=UTF-8; format=flowed
|
||||
|
||||
As a result of a long sequence of coincidences I entered the programming
|
||||
profession officially on the first spring morning of 1952, and as far as
|
||||
I have been able to trace, I was the first Dutchman to do so in my
|
||||
country. In retrospect the most amazing thing is the slowness with which,
|
||||
at least in my part of the world, the programming profession emerged, a
|
||||
slowness which is now hard to believe. But I am grateful for two vivid
|
||||
recollections from that period that establish that slowness beyond any
|
||||
doubt.
|
||||
|
||||
After having programmed for some three years, I had a discussion with
|
||||
van Wijngaarden, who was then my boss at the Mathematical Centre in
|
||||
Amsterdam - a discussion for which I shall remain grateful to him
|
||||
as long as I live. The point was that I was supposed to study theoretical
|
||||
physics at the University of Leiden simultaneously, and as I found the
|
||||
two activities harder and harder to combine, I had to make up my
|
||||
mind, either to stop programming and become a real, respectable theoretical
|
||||
physicist, or to carry my study of physics to a formal completion only,
|
||||
with a minimum of effort, and to become..., yes what? A programmer?
|
||||
But was that a respectable profession? After all, what was programming?
|
||||
30
backend/demo/src/main/resources/turing/turing_award_1975.eml
Normal file
30
backend/demo/src/main/resources/turing/turing_award_1975.eml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
MIME-Version: 1.0
|
||||
From: Allen Newell <allen.newell@example.com>
|
||||
Cc: Herbert Simon <herbert.simon@example.com>
|
||||
Date: Mon, 20 Oct 1975 12:00:00 -0500
|
||||
Message-ID: <turing1975@example.com>
|
||||
Subject: Computer Science as Empirical Inquiry: Symbols and Search
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b450b1092035304d85abf33
|
||||
|
||||
--047d7b450b1092035304d85abf33
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Computer science is the study of the phenomena surrounding computers. The
|
||||
founders of this society understood this very well when they called
|
||||
themselves the Association for Computing Machinery. The machine---not just
|
||||
the hardware, but the programmed, living machine--is the organism we study.
|
||||
|
||||
--047d7b450b1092035304d85abf33
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr">Computer science is the study of the phenomena surrounding=
|
||||
computers. The founders of this society understood this very well when the=
|
||||
y called themselves the Association for Computing Machinery. The machine---=
|
||||
not just the hardware, but the programmed, living machine--is the organism =
|
||||
we study.<br>
|
||||
|
||||
</div>
|
||||
|
||||
--047d7b450b1092035304d85abf33--
|
||||
39
backend/demo/src/main/resources/turing/turing_award_1977.eml
Normal file
39
backend/demo/src/main/resources/turing/turing_award_1977.eml
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
MIME-Version: 1.0
|
||||
From: "John W. Backus" <john.backus@example.com>
|
||||
Date: Mon, 17 Oct 1977 12:00:00 -0700
|
||||
Message-ID: <turing1977@example.com>
|
||||
Subject: Can Programming Be Liberated from the von Neumann Style? A Functional
|
||||
Style and Its Algebra of Programs
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b5d9bdd8a36e804d85ade47
|
||||
|
||||
--047d7b5d9bdd8a36e804d85ade47
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Conventional programming languages are growing ever more enormous, but not
|
||||
stronger. Inherent defects at the most basic level cause them to be both
|
||||
fat and weak: their primitive word-at-a-time style of programming inherited
|
||||
from their common ancestor--the von Neumann computer, their close coupling
|
||||
of semantics to state transitions, their division of programming into a
|
||||
world of expressions and a world of statements, their inability to
|
||||
effectively use powerful combining forms for building new programs from
|
||||
existing ones, and their lack of useful mathematical properties for
|
||||
reasoning about
|
||||
programs.
|
||||
|
||||
--047d7b5d9bdd8a36e804d85ade47
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Conventional programming languages are growing ever m=
|
||||
ore enormous, but not stronger. Inherent defects at the most basic level ca=
|
||||
use them to be both fat and weak: their primitive word-at-a-time style of p=
|
||||
rogramming inherited from their common ancestor--the von Neumann computer, =
|
||||
their close coupling of semantics to state transitions, their division of p=
|
||||
rogramming into a world of expressions and a world of statements, their ina=
|
||||
bility to effectively use powerful combining forms for building new program=
|
||||
s from existing ones, and their lack of useful mathematical properties for =
|
||||
reasoning about=C2=A0</div>
|
||||
<div>programs.</div></div>
|
||||
|
||||
--047d7b5d9bdd8a36e804d85ade47--
|
||||
36
backend/demo/src/main/resources/turing/turing_award_1978.eml
Normal file
36
backend/demo/src/main/resources/turing/turing_award_1978.eml
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
MIME-Version: 1.0
|
||||
From: Robert Floyd <robert.floyd@example.com>
|
||||
Date: Mon, 04 Dec 1978 12:00:00 -0500
|
||||
Message-ID: <turing1978@example.com>
|
||||
Subject: The Paradigms of Programming
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=089e0118419206e64304d85af860
|
||||
|
||||
--089e0118419206e64304d85af860
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Today I want to talk about the paradigms of programming, how they affect
|
||||
our success as designers of computer programs, how they should be taught,
|
||||
and how they should be embodied in our programming languages.
|
||||
A familiar example of a paradigm of programming is the technique of
|
||||
structured programming, which appears to be the dominant paradigm in most
|
||||
current treatments of programming methodology. Structured programming, as
|
||||
formulated by Dijkstra, Wirth, and Parnas, among others, consists of two
|
||||
phases.
|
||||
|
||||
--089e0118419206e64304d85af860
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>Today I want to talk about the paradigms of programmi=
|
||||
ng, how they affect our success as designers of computer programs, how they=
|
||||
should be taught, and how they should be embodied in our programming langu=
|
||||
ages.=C2=A0</div>
|
||||
<div>A familiar example of a paradigm of programming is the technique of st=
|
||||
ructured programming, which appears to be the dominant paradigm in most cur=
|
||||
rent treatments of programming methodology. Structured programming, as form=
|
||||
ulated by Dijkstra, Wirth, and Parnas, among others, consists of two phases=
|
||||
.=C2=A0</div>
|
||||
</div>
|
||||
|
||||
--089e0118419206e64304d85af860--
|
||||
33
backend/demo/src/main/resources/turing/turing_award_1979.eml
Normal file
33
backend/demo/src/main/resources/turing/turing_award_1979.eml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Kenneth E. Iverson" <kenneth.iverson@example.com>
|
||||
Date: Mon, 29 Oct 1979 12:00:00 -0500
|
||||
Message-ID: <turing1979@example.com>
|
||||
Subject: Notation as a Tool of Thought
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=20cf30549cad76254e04d85ae4df
|
||||
|
||||
--20cf30549cad76254e04d85ae4df
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
The importance of nomenclature, notation, and language as tools of thought
|
||||
has long been recognized. In chemistry and in botany, for example, the
|
||||
establishment of systems of nomenclature by Lavoisier and Linnaeus did much
|
||||
to stimulate and to channel later investigation. Concerning language,
|
||||
George Boole in his Laws off Thought asserted "That language is an
|
||||
instrument of human reason, and not merely a medium for the expression of
|
||||
thought, is a truth generally admitted."
|
||||
|
||||
--20cf30549cad76254e04d85ae4df
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>The importance of nomenclature, notation, and languag=
|
||||
e as tools of thought has long been recognized. In chemistry and in botany,=
|
||||
for example, the establishment of systems of nomenclature by Lavoisier and=
|
||||
Linnaeus did much to stimulate and to channel later investigation. Concern=
|
||||
ing language, George Boole in his Laws off Thought asserted "That lang=
|
||||
uage is an instrument of human reason, and not merely a medium for the expr=
|
||||
ession of thought, is a truth generally admitted."</div>
|
||||
</div>
|
||||
|
||||
--20cf30549cad76254e04d85ae4df--
|
||||
51
backend/demo/src/main/resources/turing/turing_award_1981.eml
Normal file
51
backend/demo/src/main/resources/turing/turing_award_1981.eml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
MIME-Version: 1.0
|
||||
From: "Edgar F. Codd" <edgar.codd@example.com>
|
||||
Date: Wed, 11 Nov 1981 12:00:00 -0800
|
||||
Message-ID: <turing1981@example.com>
|
||||
Subject: Relational Database: A Practical Foundation for Productivity
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7bfd026c782f2404d85ab4b8
|
||||
|
||||
--047d7bfd026c782f2404d85ab4b8
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
It is well known that the growth in demands from end users for new
|
||||
applications is outstripping the capability of data processing departments
|
||||
to implement the corresponding application programs. There are two
|
||||
complementary approaches to attacking this problem (and both approaches are
|
||||
needed): one is to put end users into direct touch with the information
|
||||
stored in computers; the other is to increase the productivity of data
|
||||
processing professionals in the development of application programs. It is
|
||||
less well known that a single technology, relational database management,
|
||||
provides a practical foundation for both approaches. It is explained why
|
||||
this
|
||||
is so.
|
||||
While developing this productivity theme, it is noted that the time has
|
||||
come to draw a very sharp line between relational and non-relational
|
||||
database systems, so that the label "relational" will not be used in
|
||||
misleading ways.
|
||||
The key to drawing this line is something called a "relational processing
|
||||
capability."
|
||||
|
||||
--047d7bfd026c782f2404d85ab4b8
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>It is well known that the growth in demands from end =
|
||||
users for new applications is outstripping the capability of data processin=
|
||||
g departments to implement the corresponding application programs. There ar=
|
||||
e two complementary approaches to attacking this problem (and both approach=
|
||||
es are needed): one is to put end users into direct touch with the informat=
|
||||
ion stored in computers; the other is to increase the productivity of data =
|
||||
processing professionals in the development of application programs. It is =
|
||||
less well known that a single technology, relational database management, p=
|
||||
rovides a practical foundation for both approaches. It is explained why thi=
|
||||
s=C2=A0</div>
|
||||
<div><div>is so.=C2=A0</div><div>While developing this productivity theme, =
|
||||
it is noted that the time has come to draw a very sharp line between relati=
|
||||
onal and non-relational database systems, so that the label "relationa=
|
||||
l" will not be used in misleading ways.=C2=A0</div>
|
||||
<div>The key to drawing this line is something called a "relational pr=
|
||||
ocessing capability."</div></div></div>
|
||||
|
||||
--047d7bfd026c782f2404d85ab4b8--
|
||||
46
backend/demo/src/main/resources/turing/turing_award_1983.eml
Normal file
46
backend/demo/src/main/resources/turing/turing_award_1983.eml
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
MIME-Version: 1.0
|
||||
From: Dennis Ritchie <dennis.ritchie@example.com>
|
||||
Date: Mon, 24 Oct 1983 12:00:00 -0400
|
||||
Message-ID: <turing1983@example.com>
|
||||
Subject: Reflections on Software Research
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=bcaec54fbb2250035a04d85aabcd
|
||||
|
||||
--bcaec54fbb2250035a04d85aabcd
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
The UNIX operating system has suddenly become news, but it is not new. It
|
||||
began in 1969 when Ken Thompson discovered a little-used PDP-7 computer and
|
||||
set out to fashion a computing environment that he liked, His work soon
|
||||
attracted me; I joined in the enterprise, though most of the ideas, and
|
||||
most of the work for that matter, were his. Before long, others from our
|
||||
group in the research area of AT&T Bell Laboratories were using the system;
|
||||
Joe Ossanna, Doug Mcllroy, and
|
||||
Bob Morris were especially enthusiastic critics and contributors, tn 1971,
|
||||
we acquired a PDP-11, and by the end of that year we were supporting our
|
||||
first real users: three typists entering patent applications. In 1973, the
|
||||
system was rewritten in the C language, and in that year, too, it was first
|
||||
described publicly at the Operating Systems Principles conference; the
|
||||
resulting paper appeared in Communications of the ACM the next year.
|
||||
|
||||
--bcaec54fbb2250035a04d85aabcd
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>The UNIX operating system has suddenly become news, b=
|
||||
ut it is not new. It began in 1969 when Ken Thompson discovered a little-us=
|
||||
ed PDP-7 computer and set out to fashion a computing environment that he li=
|
||||
ked, His work soon attracted me; I joined in the enterprise, though most of=
|
||||
the ideas, and most of the work for that matter, were his. Before long, ot=
|
||||
hers from our group in the research area of AT&T Bell Laboratories were=
|
||||
using the system; Joe Ossanna, Doug Mcllroy, and=C2=A0</div>
|
||||
<div>Bob Morris were especially enthusiastic critics and contributors, tn 1=
|
||||
971, we acquired a PDP-11, and by the end of that year we were supporting o=
|
||||
ur first real users: three typists entering patent applications. In 1973, t=
|
||||
he system was rewritten in the C language, and in that year, too, it was fi=
|
||||
rst described publicly at the Operating Systems Principles conference; the =
|
||||
resulting paper appeared in Communications of the ACM the next year.=C2=A0<=
|
||||
/div>
|
||||
</div>
|
||||
|
||||
--bcaec54fbb2250035a04d85aabcd--
|
||||
42
backend/demo/src/main/resources/turing/turing_award_1987.eml
Normal file
42
backend/demo/src/main/resources/turing/turing_award_1987.eml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
MIME-Version: 1.0
|
||||
From: John Cocke <john.cocke@example.com>
|
||||
Date: Mon, 16 Feb 1987 12:00:00 -0600
|
||||
Message-ID: <turing1987@example.com>
|
||||
Subject: The Search for Performance in Scientific Processors
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7bfd079665fb2c04d85ad0bc
|
||||
|
||||
--047d7bfd079665fb2c04d85ad0bc
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
I am honored and grateful to have been selected to join the ranks of ACM
|
||||
Turing Award winners. I probably have spent too much of my life thinking
|
||||
about computers, but I do not regret it a bit. I was fortunate to enter the
|
||||
field of computing in its infancy and participate in its explosive growth.
|
||||
The rapid evolution of the underlying technologies in the past 30 years has
|
||||
not only provided an exciting environment, but has also presented a
|
||||
constant stream of intellectual challenges to those of us trying to harness
|
||||
this power and squeeze it to the last ounce. I hasten to say, especially to
|
||||
the
|
||||
younger members of the audience, there is no end in sight. As a matter of
|
||||
fact, I believe the next thirty years will be even more exciting and rich
|
||||
with challenges.
|
||||
|
||||
--047d7bfd079665fb2c04d85ad0bc
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>I am honored and grateful to have been selected to jo=
|
||||
in the ranks of ACM Turing Award winners. I probably have spent too much of=
|
||||
my life thinking about computers, but I do not regret it a bit. I was fort=
|
||||
unate to enter the field of computing in its infancy and participate in its=
|
||||
explosive growth. The rapid evolution of the underlying technologies in th=
|
||||
e past 30 years has not only provided an exciting environment, but has also=
|
||||
presented a constant stream of intellectual challenges to those of us tryi=
|
||||
ng to harness this power and squeeze it to the last ounce. I hasten to say,=
|
||||
especially to the=C2=A0</div>
|
||||
<div>younger members of the audience, there is no end in sight. As a matter=
|
||||
of fact, I believe the next thirty years will be even more exciting and ri=
|
||||
ch with challenges.=C2=A0</div></div>
|
||||
|
||||
--047d7bfd079665fb2c04d85ad0bc--
|
||||
44
backend/demo/src/main/resources/turing/turing_award_1991.eml
Normal file
44
backend/demo/src/main/resources/turing/turing_award_1991.eml
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
MIME-Version: 1.0
|
||||
From: Robin Milner <robin.milner@example.com>
|
||||
Date: Mon, 18 Nov 1991 12:00:00 -0700
|
||||
Message-ID: <turing1991@example.com>
|
||||
Subject: Elements of Interaction
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=047d7b86e6de64aecb04d85affff
|
||||
|
||||
--047d7b86e6de64aecb04d85affff
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
I am greatly honored to receive this award, bearing the name of Alan
|
||||
Turing. Perhaps Turing would be pleased that it should go to someone
|
||||
educated at his old college, King's College at Cambridge. While there in
|
||||
1956 I wrote my first computer program; it was on the EDSAC. Of course
|
||||
EDSAC made history. But I am ashamed to say it did not lure me into
|
||||
computing, and I ignored computers for four years. In 1960 I thought that
|
||||
computers might be more peaceful to handle than schoolchildren--I was then
|
||||
a teacher--so I applied for a job at Ferranti in London, at the time of
|
||||
Pegasus. I was asked at the interview whether I would like to devote my
|
||||
life to computers. This daunting notion had never crossed my mind. Well,
|
||||
here I am still, and I have had the lucky chance to grow alongside computer
|
||||
science.
|
||||
|
||||
--047d7b86e6de64aecb04d85affff
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>I am greatly honored to receive this award, bearing t=
|
||||
he name of Alan Turing. Perhaps Turing would be pleased that it should go t=
|
||||
o someone educated at his old college, King's College at Cambridge. Whi=
|
||||
le there in 1956 I wrote my first computer program; it was on the EDSAC. Of=
|
||||
course EDSAC made history. But I am ashamed to say it did not lure me into=
|
||||
computing, and I ignored computers for four years. In 1960 I thought that =
|
||||
computers might be more peaceful to handle than schoolchildren--I was then =
|
||||
a teacher--so I applied for a job at Ferranti in London, at the time of=C2=
|
||||
=A0</div>
|
||||
<div>Pegasus. I was asked at the interview whether I would like to devote m=
|
||||
y life to computers. This daunting notion had never crossed my mind. Well, =
|
||||
here I am still, and I have had the lucky chance to grow alongside computer=
|
||||
science.</div>
|
||||
</div>
|
||||
|
||||
--047d7b86e6de64aecb04d85affff--
|
||||
28
backend/demo/src/main/resources/turing/turing_award_1996.eml
Normal file
28
backend/demo/src/main/resources/turing/turing_award_1996.eml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
MIME-Version: 1.0
|
||||
From: Amir Pnueli <amir.pnueli@example.com>
|
||||
Date: Thu, 15 Feb 1996 12:00:00 -0500
|
||||
Message-ID: <turing1996@example.com>
|
||||
Subject: Verification Engineering: A Future Profession
|
||||
To: Alan Turing <alan.turing@example.com>
|
||||
Content-Type: multipart/alternative; boundary=bcaec54fbb222acf6704d85aa523
|
||||
|
||||
--bcaec54fbb222acf6704d85aa523
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
It is time that formal verification (of both software and hardware systems)
|
||||
be demoted from an art practiced by the enlightened few to an activity
|
||||
routinely and mundanely performed by a cadre of Verification Engineers (a
|
||||
new profession), as a standard part of the system development process.
|
||||
|
||||
--bcaec54fbb222acf6704d85aa523
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
|
||||
<div dir=3D"ltr"><div>It is time that formal verification (of both software=
|
||||
and hardware systems) be demoted from an art practiced by the enlightened =
|
||||
few to an activity routinely and mundanely performed by a cadre of Verifica=
|
||||
tion Engineers (a new profession), as a standard part of the system develop=
|
||||
ment process.</div>
|
||||
</div>
|
||||
|
||||
--bcaec54fbb222acf6704d85aa523--
|
||||
Loading…
Add table
Add a link
Reference in a new issue