The goal is to determine which technologies are best suited for the Iroco project. In this repo you can find front and back end technologies with the same set of features relevant to a mail application. In each case we provide a full set of tests and comparative results.
To compare technologies we developed the same set of features:
- A network fetch of a list of mails.
- The display of those mails in scrollable view.
- An html viewer to display mails.
- A text input to search for mails.
You can find the mobile mockup here.
Here is the scenario we use for UI testing:
- Type "Hello World!" inside the search bar
- Scroll down the list of mails
- Click on one
- Scroll down the mail
- Return to the list of mails
- Erase the content in search bar
We are looking at the overall size of the bundled application to reduce the disk and / or network usage.
We are deeply concerned about the energy consumption of our service. In an ecological approach we tend to reduce as much as possible the footprint of our code on the user device. We compare these metrics for the same UI tests:
- High watermark for heap allocations
- High watermark for VM allocations
- Persistent heap allocations
- Persistent VM allocations
- Temporary heap allocations
- Total heap allocations
- Transient heap allocations
- Transient VM allocations
*Average based on 10 measurements for the same test on the same environment.
The performance is determined by the speed of execution based on these metrics:
- Launch time
- Duration
- Runtime
- System time
- Time
- User time
To avoid planned obsolescence and digital waste we are concerned about backward compatibility. We look at the versions of IOS, Android and web browser that can run the framework.
A mature framework tends to be more reliant and efficient. We are looking 3 metrics to compare the maturity :
- Number of releases
- Frequency of releases
- Number of contributors
A popular framework is convenient when it comes to find packages or developers. It also improves the overall code quality since the community is more active on finding issues or helping each other. We are looking here at metrics that can indicates popularity :
- Stars on Github
- Questions on Stack Overflow
- Downloads of packages
Here are the tools used to obtain these metrics :
XCode has a suite of tools to monitor running IOS apps. A good way to get hardware usages.
To test the fronts, you can find an API in the api
folder that mimics a JMAP server.
The API returns random fake emails as follows :
{
"id": "ma_Ait47m3oFHPS6jds6H0u",
"from": { "name": "John Doe", "email": "john.doe@example.com" },
"subject": "RE: Secret mission",
"receivedAt": "2013-10-13T14:12:00Z",
"htmlBody": [
{
"partId": "1",
"type": "text/html"
}, {
"partId": "2",
"type": "text/plain"
}
],
"bodyValues": {
"1": {
"value": "<h1>Hello World!</h1>"
},
"2": {
"value": "This is your secret mission"
}
}
}
There are two endpoints :
GET /mails?limit=200
- Returns a list of 200 mails without htmlBody and bodyValues.
GET /mails/random_id
- Returns an email with htmlBody and bodyValues so you can display it.
An online server is available for tests : https://iroco.herokuapp.com/