~cpick/mongrel2/release

« back to all changes in this revision

Viewing changes to docs/site/src/wiki/design_criticisms.md

  • Committer: Chris Pick
  • Date: 2013-06-30 16:39:57 UTC
  • mfrom: (1106.1.15)
  • Revision ID: git-v1:ec39967acb6bc9867ed9b9dc3774304ca6b9c294
Merge tag 'v1.8.1' into debian

Hotfix for github issue 148

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Design Criticisms
 
2
=================
 
3
 
 
4
The idea for Mongrel2 is slightly controversial, but it has potential.  Here's
 
5
some criticisms about the proposed design, and I'm looking for more.
 
6
 
 
7
 
 
8
Criticism: Windows Registry
 
9
---------------------------
 
10
 
 
11
"Using sqlite for the config file will be like working with the windows registry."
 
12
 
 
13
Mongrel2 now has support for configuring itself from anything, including the
 
14
default of a sqlite3 database.  After a year of using Mongrel2 in production I can
 
15
tell you this is freaking awesome.  It's nothing like the Windows Registry and 
 
16
people telling you that are just trying to trot out an old Window$-Hater Linux
 
17
Guy trope to scare you.
 
18
 
 
19
 
 
20
Criticism: Config Files Are Better
 
21
----------------------------------
 
22
 
 
23
I work in a fully automated developer operations world, and have found
 
24
that no, configuration files are not better.  Configuration files suck
 
25
unless you're some jerk who likes editing them.  The rest of us generate
 
26
them from a Chef or Puppet server and get on with our lives.
 
27
 
 
28
 
 
29
Criticism: It should be event based, not use coroutines or threads.
 
30
-------------------------------------------------------------------
 
31
 
 
32
It is event based in that it uses kqueue/epoll/poll/select, but it abstracts
 
33
the complexity of event systems away using coroutines.  You get the best of
 
34
both worlds.
 
35
 
 
36
 
 
37
Criticism: Flash sucks, use something else.
 
38
--------------------------------
 
39
 
 
40
JSSockets work, and they're reliable.  When WebSockets is established and in at
 
41
least 2 browsers I'll add that as well.  Mongrel2 works with long polling but
 
42
it's not that big of a deal, it's just how Mongrel2 works.  It's only a big
 
43
deal in web servers that suck.
 
44
 
 
45
We'll be also releasing a version with the latest "hybi" implementation of 
 
46
WebSockets because they don't suck.
 
47
 
 
48
Criticism: It needs to serve files.
 
49
------------------------
 
50
 
 
51
It does serve files, and since obviously that's the first vanity metric
 
52
everyone uses, it will serve them fast.  It's just Mongrel2 will favor
 
53
*language agnostic* applications over simple file serving.  Actually, I'm
 
54
not sure why people thought it wouldn't.
 
55
 
 
56
 
 
57
Criticism: People hate SQL and won't want to use it to configure Mongrel2.
 
58
--------------------------------------------------------------
 
59
 
 
60
They don't use SQL, they use a tool called *m2sh* or use any programming language
 
61
they want with any database they want, even flat files.
 
62
 
 
63
 
 
64
Criticism: SQLite3 is not Diff/Git friendly so I can't use it.
 
65
--------------------------------------------------
 
66
 
 
67
The default *m2sh* command uses a config file, so diff away.  If you want to
 
68
then use only config files you can write a new backend that gets rid of 
 
69
sqlite3, or uses redis.  Whatever you want.
 
70
 
 
71
Criticism: SQLite3 will be hard to change quickly so I'll be stuck in an emergency situation.
 
72
--------
 
73
 
 
74
It's a SQL database, it's all about changes, and you won't use SQL directly,
 
75
so this is just plain wrong.  Not only will you be able to change it
 
76
quickly, but you'll be able to replicate those changes to all your
 
77
servers in one shot, roll them back, and lots of other great features.
 
78
 
 
79
 
 
80
Criticism: It will suck for developers because so much emphasis is on operations.
 
81
--------
 
82
 
 
83
No, it will obviously be for both, it'll just be focused on operations needs
 
84
before developer needs.  You will of course still get your "5 minute quick
 
85
start" and be able to fire up your application quickly, just like all the
 
86
competitors.
 
87
 
 
88
Criticism: SQLite cannot handle hierarchical configs like in NGinx.
 
89
--------------------------------------------------------
 
90
 
 
91
We have completely smashed this criticism in the face.  We have working
 
92
code that not only can load a full hierarchical config from SQLite, but
 
93
also load it *from anything else*.
 
94
 
 
95