Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/neomutt/test-arch
💠Ideas for a new mutt architecture
https://github.com/neomutt/test-arch
arch code sample
Last synced: about 11 hours ago
JSON representation
💠Ideas for a new mutt architecture
- Host: GitHub
- URL: https://github.com/neomutt/test-arch
- Owner: neomutt
- License: other
- Created: 2016-01-23T14:03:41.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2023-12-12T10:43:35.000Z (11 months ago)
- Last Synced: 2023-12-12T11:41:45.070Z (11 months ago)
- Topics: arch, code, sample
- Language: C
- Homepage:
- Size: 118 KB
- Stars: 6
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Arch
## What is it?
This is a sample application showing what I'd like mutt to look like: a set of
objects with inheritance; virtual functions; reference counting.## Why?
The mutt code is a mass of interdependent components which all rely on global
variables.Mutt needs to be broken up to give better independence between components.
This will make mutt more robust and easier to maintain.## What am I looking at?
This is the inheritance graph for the objects in the application.
![inheritance](inherit.svg)
To understand how the objects fit together, start with the **source**s. Each
**source** represents one connection to a data source: 1 imap connection, 1
contact list, etc.The **source**s store their data in **item**s, which can be grouped into
**folder**s. A **folder** can represent a real directory, or something virtual
like a tag. Because all the **object**s are reference counted, the **item**s
can appear in zero, one or multiple **folder**s. Because of the inheritance
(in theory) an **email** object could be passed between **source**s.**source**s are owned by **view**s. A **view** may contain multiple
**source**s, e.g. several email servers, multiple contact lists. The
**view**s directly map onto what gets displayed on screen (and would fit into
my panel manager ideally).## Plugins
The application has a sample **source** for every text-based information source
I thought useful.* Email:
* imap
* maildir
* mbox
* notmuch (search engine)* News:
* NNTP (usenet)
* RSS* General office:
* Contact list
* Task lists
* Calendar## Who?
* Rich Russon (FlatCap) <[email protected]>
* https://flatcap.org/![flatcap](https://flatcap.org/gfx/flatcap.png)
## License
The code is released under the GPLv3.
See [LICENSE.md](https://github.com/neomutt/arch/blob/master/LICENSE.md) for more details.