• Stars
    star
    116
  • Rank 303,894 (Top 6 %)
  • Language
    Ruby
  • Created almost 13 years ago
  • Updated over 12 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Newman: a microframework for building email-based applications.

Newman

Newman is a microframework which aims to do for email-based applications what Rack and Sinatra have done for web programming. While our goals may be ambitious, this project is currently in a very early experimental stage, and is in no way safe for use in production.

That said, Newman is already capable of doing a number of interesting things. In particular:

  • A simple polling server provides a basic interface for reading email from a single inbox and then building up a response email.

  • Filters are provided for handling emails based on their TO and SUBJECT fields.

  • Filters can also be defined for handling messages based on arbitrary conditions evaluated against a Mail::Messsage object.

  • A rudimentary PStore backed storage mechanism is provided for persistence.

  • Basic support for maintaining persistent lists of email addresses is provided.

  • Basic support for email templates are provided via Tilt.

  • A barebones configuration system allows configuring email settings, service settings, and application specific settings.

We are still working on figuring out what belongs in Newman and what doesn't, and so all of these features are subject to change or disappear entirely. But if you have a need for this sort of tool, it's worth noting that this software isn't entirely vaporware, and that we could use your help!

Scary Warning:

DON'T HOOK UP NEWMAN TO ANY EMAIL INBOX THAT YOU CAN'T COMPLETELY WIPE OUT EVERY TIME IT RUNS. NEWMAN WILL DELETE YOUR EMAILS!!!

For a demonstration of how Newman is used:

Check out Jester as well as some of the simple examples in this repository.

For a walkthrough of Newman's codebase:

Check out Newman's Rocco-based API documentation.

We update this documentation on each gem release of newman, but to generate this documentation yourself, you'll need to install the rocco gem.

For general discussion, questions, and ideas about Newman:

Find seacreature or ericgj in the #newman channel on Freenode or send an email to [email protected]

Contributing to Newman:

We do not yet have a clear roadmap or contributor guidelines, so be sure to talk to us before working on bug fixes or patches. But assuming you do want to send us some code, here is what you need to know:

  • You get to keep the copyright to your code, but you must agree to license it under the MIT license.

  • Your code should come with tests. Integration tests are fine, but unit tests would be nice where appropriate. Right now Newman is under tested and we don't want to make that problem worse. You can of course submit a pull request for feedback BEFORE writing tests.

  • Your code should be fully documented, and properly formatted for use with Rocco. Please try to emulate the style and conventions we've been using where possible. Do the best you can with this, and we'll help tighten up wording and clean up formatting as needed. You can of course submit a pull request for feedback BEFORE writing documentation.

  • Newman is taking a use-case oriented approach to design. Be prepared to justify any proposed change with real or realistic scenarios, rather than simply addressing theoretical concerns.

Versioning Policy:

We will try to follow the guidelines below when cutting new releases, to the extent that it makes sense to do so.

  1. Clearly mark each object that Newman provides as being part of either the 'external API' or the 'internal API'. The external API is for application developers, the internal API is for Newman itself as well as extension developers

  2. Before 1.0, allow backwards incompatible internal API changes during every release, and allow backwards incompatible external API changes during minor version bumps, but do not add or change external behavior in tiny version bumps.

  3. After 1.0, do not allow external or internal API changes during tiny version bumps (these will be bug fixes only). Allow changes to the internal API during minor version bumps, but maintain backwards compatibility with the 1.0 release (i.e. things introduced after 1.0 can be changed / removed, but things which shipped with 1.0 should stay supported, even internally). Allow external API changes or backwards-incompatible changes to the internals only on major version bumps (i.e. 2.0, 3.0, etc). Use semantic versioning and declare the external API to be the 'public' API.

We plan to get to 1.0 quickly to reach a stabilizing point for application developers and a slower moving target for extension developers. This means that our 1.0 release will be more of a minimum-viable product and not necessarily a full-stack framework.

Authorship:

Newman is being developed by Gregory Brown and Eric Gjertsen, along with help from several other folks.

It is based on an assignment from Mendicant University's January 2011 core skills course, and was also used as a sample application for the Practicing Ruby journal. The original inspiration for this project came from some code written by Brent Vatne, as well as from the general ideas behind Rack and Sinatra.

View the full list of contributors to see who else has helped out.

License:

Copyright (c) 2012 Gregory Brown, Eric Gjertsen, et al.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

More Repositories

1

university-web

School administration app for Mendicant University
Ruby
101
star
2

puzzlenode

Quiz application inspired by Project Euler and the Internet Problem Solving Contest (IPSC)
Ruby
81
star
3

community

Mendicant University's community website
Ruby
20
star
4

rmu-entrance-exam-2010

Ruby
20
star
5

mendibot

IRC bot for Mendicant University
Ruby
17
star
6

s1-e1

RMU Session #1, Exercise #1
16
star
7

rmu-entrance-exam-2011-t1

14
star
8

s7-e3

13
star
9

s2-e2

13
star
10

liskov

aka University Web 2.0 // Mendicant University's course management system
Ruby
12
star
11

s7-e1

12
star
12

s2-e1

11
star
13

s1-e2

11
star
14

sicp

11
star
15

rdrc-exercise

10
star
16

s2-e3

10
star
17

s9-e1

Integration Exercise: Java Library Wrapper
9
star
18

s4-e1

9
star
19

mentoring

Ruby
9
star
20

s9-e3

9
star
21

s1-final

9
star
22

s5-e3

9
star
23

s3-e2

8
star
24

ivory_tower

Ruby
8
star
25

s3-e1

8
star
26

wiki

8
star
27

s6-e1

8
star
28

s5-e1

Web service facades
8
star
29

s4-e3

7
star
30

s4-e2

Ruby
7
star
31

s0-e1

First Exercise!
7
star
32

s3-e3

7
star
33

s9-e2

Challenge Exercise: Exponential Chaos
7
star
34

jester

Ruby
7
star
35

s10-int

6
star
36

s8-e2

Challenge Exercise: Train Games
6
star
37

scheduler

Utility for scheduling meetings for RMU
Ruby
6
star
38

learning-series

Walk-throughs of practical Ruby problems and their solutions
Ruby
6
star
39

s8-e3

5
star
40

s10-edu

5
star
41

s0-e3

5
star
42

mu_projects_blog

MU Projects Blog
JavaScript
5
star
43

s6-e3

Ruby
4
star
44

vectorize

Vector Graphics library using Cairo via FFI
Ruby
4
star
45

stream

Ruby
4
star
46

s8-e1

FFI Bindings exercise
4
star
47

mendicantuniversity.org

Mendicant Universities Public Site
Ruby
4
star
48

ups_and_downs

4
star
49

s0-e2

Exercise 2
4
star
50

s8-e4

4
star
51

clubhouse

Ruby
3
star
52

s10-notes

3
star
53

s7-e2

3
star
54

s10-mod

3
star
55

anita

cinch-based IRC bot
Ruby
3
star
56

s5-e2

3
star
57

s6-e2

Ruby
2
star
58

red-dirt

Ruby
2
star
59

mail_whale

Simple Newman based mailing list system
Ruby
2
star
60

insider

2
star
61

s0-final

1
star
62

webdev3-planning

1
star
63

podcast

1
star
64

manatee

Application for meticulously managing mentoring meetings
1
star
65

plans

Plans for Ruby Mendicant Unversity
1
star
66

s1-exam-tehviking

Ruby
1
star
67

transcripts

1
star
68

s1-exam-afcapel

Ruby
1
star
69

process-docs

1
star
70

Go

1
star
71

hackday

1
star