1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
|
---
layout: page
title: Glossary
---
FixMyStreet glossary
====================
<p class="lead">Glossary of terms for FixMyStreet, mySociety's geographic
problem reporting platform.</p>
The [FixMyStreet](https://www.fixmystreet.com/) Platform is an open source
project to help people run websites for reporting common street problems such
as potholes and broken street lights to an appropriate authority. For
technical information, see
[fixmystreet.org](https://fixmystreet.org/).
## Definitions
<ul class="definitions">
<li><a href="#abuse-list">abuse list</a></li>
<li><a href="#area">admin boundary</a></li>
<li><a href="#administrator">administrator</a></li>
<li><a href="#alert">alert</a></li>
<li><a href="#area-type">area type</a></li>
<li><a href="#abuse-list">banning</a></li>
<li><a href="#body">body</a></li>
<li><a href="#catalyst">Catalyst</a></li>
<li><a href="#category">category</a></li>
<li><a href="#cobrand">cobrand</a></li>
<li><a href="#config-variable">config variable</a></li>
<li><a href="#token">confirmation</a></li>
<li><a href="#contact">contact</a></li>
<li><a href="#council">council</a></li>
<li><a href="#dashboard">dashboard</a></li>
<li><a href="#development">development site</a></li>
<li><a href="#devolve">devolved contacts</a></li>
<li><a href="#flagged">flagged</a></li>
<li><a href="#geocoder">geocoder</a></li>
<li><a href="#gettext">gettext</a></li>
<li><a href="#git">git</a></li>
<li><a href="#kml">KML</a></li>
<li><a href="#integration">integration</a></li>
<li><a href="#latlong">lat-long</a></li>
<li><a href="#locale">locale</a></li>
<li><a href="#map">map</a></li>
<li><a href="#mapit">MapIt</a></li>
<li><a href="#message-manager">Message Manager</a></li>
<li><a href="#open311">Open311</a></li>
<li><a href="#partial">partial report</a></li>
<li><a href="#production">production site</a></li>
<li><a href="#report">problem report</a></li>
<li><a href="#sms">SMS</a></li>
<li><a href="#survey">questionnaire</a></li>
<li><a href="#send-method">send method</a></li>
<li><a href="#staff-user">staff users</a></li>
<li><a href="#staging">staging site</a></li>
<li><a href="#state">state</a></li>
<li><a href="#survey">survey</a></li>
<li><a href="#template">template</a></li>
<li><a href="#token">token</a></li>
<li><a href="#update">update</a></li>
<li><a href="#user-account">user account</a></li>
</ul>
<dl class="glossary">
<dt>
<a name="abuse-list">abuse list</a> (also banning)
</dt>
<dd>
The <strong>abuse list</strong> is a list of email addresses that are
banned from using the site for misuse. In our experience, this is rare;
but, for example, a user who repeatedly posts offensive or vexatious <a
href="#report" class="glossary__link">problem reports</a> may be blocked in this
way.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/users/" | relative_url }}">About users</a> for more about managing
abusive users.
</li>
</ul>
</div>
</dd>
<dt>
<a name="administrator">administrator</a>
</dt>
<dd>
An <strong>administrator</strong> is a user who has access to the back-end
admin (so can do things like add or edit <a href="#body"
class="glossary__link">bodies</a>, modify <a href="#report"
class="glossary__link">problem reports</a>, and <a href="{{ "/running/users/" | relative_url }}">manage
users</a>). An administrator should also have access to the email account
to which user support emails are sent.
<p>
Depending on how the site has been configured, this may be a regular
FixMyStreet <a href="#user-account" class="glossary__link">user</a>. However,
often it's an <code>htauth</code> user instead (which is a user managed
by the webserver, rather than the FixMyStreet application itself).
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See also <strong><a href="#staff-user" class="glossary__link">staff
user</a></strong>, which is a FixMyStreet user who works for a <a
href="#body" class="glossary__link">body</a>.
</li>
<li>
See the <a href="{{ "/running/admin_manual/" | relative_url }}">Administrator's Manual</a> for
details of what an administrator does.
</li>
</ul>
</div>
</dd>
<dt>
<a name="alert">alert</a>
</dt>
<dd>
FixMyStreet users can subscribe to emails (or RSS feeds) which will notify
them when reports or updates are made within a certain area. These notifications
are called <strong>alerts</strong>.
<p>
Users can subscribe to various alerts - for example, all reports made
within a body, or within a certain distance of their chosen location
</p>
<p>
Alerts are available on the FixMyStreet site at <code>/alert</code>.
</p>
</dd>
<dt>
<a name="area">area</a> (also administrative boundary)
</dt>
<dd>
FixMyStreet uses <strong>areas</strong> to determine which <a href="#body"
class="glossary__link">bodies</a> are responsible for handling problems at a
specific location. When a user clicks on the <a href="#map"
class="glossary__link">map</a>, FixMyStreet finds all the bodies that are responsible
for that area. Technically, an area comprises one or more polygons on a
map — either those areas already exist (from <a href="#osm"
class="glossary__link">OpenStreetMap</a>, for example) or you can provide your
own. You can add your own areas to <a href="#mapit"
class="glossary__link">MapIt</a> by drawing them on a map, or importing
shapefiles from other mapping applications.
<p>
The
<code><a href="{{ "/customising/config/#mapit_id_whitelist" | relative_url }}">MAPIT_ID_WHITELIST</a></code>
config setting can explicitly list the <em>only</em>
areas your installation will recognise — alternatively, you can
limit them by <a href="#area-type" class="glossary__link">area type</a>
instead.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/customising/boundaries/" | relative_url }}">more about boundaries</a>
and the different ways to set them up.
</li>
<li>
See <a href="{{ "/customising/fms_and_mapit/" | relative_url }}">How FixMyStreet uses
MapIt</a> for more about how bodies relate to <a href="#area"
class="glossary__link">areas</a>.
</li>
<li>
See the <a href="http://global.mapit.mysociety.org/">global MapIt
website</a> for more about the service.
</li>
<li>
Every area has an <strong><a href="#area-type" class="glossary__link">area
type</a></strong> which indicates what level of administration
boundary it represents.
</li>
</ul>
</div>
</dd>
<dt>
<a name="area-type">area type</a>
</dt>
<dd>
The <a href="#area" class="glossary__link">areas</a> that <a href="#mapit"
class="glossary__link">MapIt</a> returns are administrative boundaries. In
addition to each boundary's geometry (that is, its actual shape on the
map), MapIt also identifies what <strong>area type</strong> it is. The
area type indicates what level of administrative boundary that area
represents — for example, a national border, or the boundary of a
province, or a ward, and so on.
<p>
The
<code><a href="{{ "/customising/config/#mapit_types" | relative_url }}">MAPIT_TYPES</a></code>
config setting specifies the area types your installation uses.
</p>
<p>
These types' actual values vary depending on the source of the data. For
example, if you're using our global MapIt, these will look like
<code>O02</code>, <code>O03</code>, <code>O04</code> and so on (because
those are the values <a href="#osm" class="glossary__link">OpenStreetMap</a>
uses, from where global MapIt gets its data). OpenStreetMap's codes get
higher as the boundaries get more local: <code>O02</code> indicates a
<em>national boundary</em>, codes <code>O03</code> and above are for
subnational areas. The exact meaning of such boundaries varies according
to the administrative hierarchy of the specific country.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/customising/boundaries/" | relative_url }}">more about boundaries</a>
and the different ways to set them up.
</li>
<li>
See <a href="{{ "/customising/fms_and_mapit/" | relative_url }}">How FixMyStreet uses
MapIt</a> for more about how bodies relate to <a href="#area"
class="glossary__link">areas</a>.
</li>
<li>
See the <a href="http://global.mapit.mysociety.org/">global MapIt
website</a> for more about the service.
</li>
</ul>
</div>
</dd>
<dt>
<a name="body">body</a>
</dt>
<dd>
A <strong>body</strong> is the authority responsible for a problem. Bodies
can be councils, local government departments (such as the Department of
Public Works, or the Highways Department), or even private companies that
are paid to fix particular problems.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/bodies_and_contacts/" | relative_url }}">Managing bodies and
contacts</a> for how to set these up.
</li>
<li>
See <a href="{{ "/customising/fms_and_mapit/" | relative_url }}">How FixMyStreet uses
MapIt</a> for more about how bodies relate to <a href="#area"
class="glossary__link">areas</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="catalyst">Catalyst</a> (Perl framework)
</dt>
<dd>
FixMyStreet is written in Perl, and uses the <strong>Catalyst</strong>
framework. For basic customisation you don't need to write any Perl —
you can get a site up and running with your own colours, logo, and location
without needing to do any programming. But if you do need to look into the
source code, you'll find the Catalyst framework helps, because it's a
"Model-View-Controller" framework (which is common in web applications).
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See the <a href="{{ "/directory_structure/" | relative_url }}">FixMyStreet
directory structure</a> explained.
</li>
<li>
If you need to understand more about the framework, see the
<a href="http://www.catalystframework.org">Catayst project website</a>.
</li>
<li>
More about
<a href="{{ "/customising/" | relative_url }}">customising FixMyStreet</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="category">category</a>
</dt>
<dd>
<strong>Categories</strong> describe the different types of problem that a
user can report, for example, "Pothole", or "Graffiti". The names of these
categories are displayed in the drop-down menu when the user reports a
problem. FixMyStreet uses the category, together with the <a href="#area"
class="glossary__link">area</a>, to determine which <a href="#contact"
class="glossary__link">contact</a> will be sent the report.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/bodies_and_contacts/" | relative_url }}">Managing bodies and
contacts</a> for how to set these up.
</li>
</ul>
</div>
</dd>
<dt>
<a name="cobrand">cobrand</a>
</dt>
<dd>
FixMyStreet uses a system of cobranding to customise the
way the site looks and behaves. This can be as simple as changing the
colour scheme and logo, right through to overriding specific behaviour with
custom Perl code. Each <strong>cobrand</strong> has a name which the FixMyStreet
code uses when deciding which style and behaviour to apply.
<p>
For a live example of cobranding, consider two sites in the UK. Our <a
href="https://www.fixmystreet.com/">FixMyStreet site</a> runs with the
<code>fixmystreet</code> cobrand, which has a yellow-and-asphalt
appearance, and has an example street from the city of Manchester in the
"enter a street name" box. But the <a
href="https://fixmystreet.oxfordshire.gov.uk/">Oxfordshire site</a> is
running the <code>oxfordshire</code> cobrand, which makes the site green
and suggests a street name from Oxfordshire.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
The cobrands that FixMyStreet will use are defined in the
<code><a href="{{ "/customising/config/#allowed_cobrands" | relative_url }}">ALLOWED_COBRANDS</a></code>
config setting, based on the URL of the incoming request.
</li>
<li>
<a href="{{ "/customising/" | relative_url }}">more about customising</a>, including a
<a href="{{ "/customising/checklist/" | relative_url }}">checklist</a> of the key things to consider.
</li>
<li>
See <a href="{{ "/customising/cobrand-module/" | relative_url }}">Cobrand module</a> for
information about the Perl class you can override.
</li>
</ul>
</div>
</dd>
<dt>
<a name="config-variable">config variable</a> (also config setting, or config option)
</dt>
<dd>
A <strong>config variable</strong> is one of the settings in the
configuration file <code>conf/general.yml</code>. Config variables affect
the way your FixMyStreet installation behaves, and you must make sure they
are correct when you install and customise your site.
<p>
Note that <code>conf/general.yml</code> is <em>not</em> in the <a
href="#git" class="glossary__link">git repository</a> (it cannot be, because
it would contain your own private config settings, such as your database
password). Instead, there is an example file,
<code>cong/general.yml-example</code> you can
copy and edit. If you install using the
<a href="{{ "/install/install-script/" | relative_url }}">installation script</a>
or the <a href="{{ "/install/ami/" | relative_url }}">AMI</a>, this file will
automatically be created for you.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/customising/config" | relative_url }}">all the config settings</a>
you need to get your site running.
</li>
<li>
See <a href="http://www.yaml.org/">the YAML website</a> for
everything about YAML, which is the format of the
<code>general.yml</code> file
</li>
</ul>
</div>
</dd>
<dt>
<a name="contact">contact</a>
</dt>
<dd>
Each <a href="#body" class="glossary__link">body</a> has one or more
<strong>contacts</strong> to which reports are sent. Typically these are
email addresses (but if you have <a href="#integration"
class="glossary__link">integrated</a> with the body's back-end, these may be
codes or IDs used by that instead of email addresses). It's not uncommon
for a body to have many contacts with the same email address, but with
different <a href="#category" class="glossary__link">categories</a>.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/bodies_and_contacts/" | relative_url }}">Managing bodies and
contacts</a> for how to set these up.
</li>
</ul>
</div>
</dd>
<dt>
<a name="council">council</a>
</dt>
<dd>
A <strong>council</strong> is an example of a <a href="#body"
class="glossary__link">body</a>. We sometimes use the term because in the UK,
where we first launched FixMyStreet, the bodies to which the site sends
its <a href="#report" class="glossary__link">problem reports</a> were all called
councils.
</dd>
<dt>
<a name="dashboard">dashboard</a>
</dt>
<dd>
The <strong>dashboard</strong> shows a summary of statistics (numbers of
<a href="#report" class="glossary__link">problem reports</a> by <a href="state"
class="glossary__link">state</a>, and so on) for a single <a href="#body"
class="glossary__link">body</a>.
<p>
The dashboard is shown on the FixMyStreet website at
<code>/dashboard</code>, but can only be accessed by a <a
href="#staff-user" class="glossary__link">staff user</a>.
</p>
</dd>
<dt>
<a name="development">development site</a> (also: dev, development server)
</dt>
<dd>
A <strong>dev server</strong> is one that is running your FixMyStreet site
so you can <a href="{{ "/customising/" | relative_url }}">customise it</a>, experiment
with different settings, and test that it does what you expect.
This is different from a
<a href="#production" class="glossary__link">production server</a>, which is the one your
users actually visit running with live data, or a
<a href="#staging" class="glossary__link">staging server</a>,
which is used for testing code before it goes live.
<p>
On your dev server, you should set
<code><a href="{{ "/customising/config/#staging_site" | relative_url }}">STAGING_SITE</a></code>
to <code>1</code>.
</p>
</dd>
<dt>
<a name="devolve">devolved contacts</a>
</dt>
<dd>
Normally, you specifiy the
<a href="#administrator" class="glossary__link">send method</a>
for a whole <a href="#body" class="glossary__link">body</a>, so all
its <a href="#report" class="glossary__link">problem reports</a>
will be sent in that way. But you can <strong>devolve</strong>
the decision of which send method to use to the body's
<a href="#contact" class="glossary__link">contacts</a>
instead. For example, this lets you mix both email addresses and
<a href="#open311" class="glossary__link">Open311</a>
service codes within the same body.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/bodies_and_contacts/" | relative_url }}">Managing
bodies and contacts</a> for how to set these up.
</li>
</ul>
</div>
</dd>
<dt>
<a name="flagged">flagged</a>
</dt>
<dd>
A report or a user can be <strong>flagged</strong> if an <a
href="#administrator" class="glossary__link">administrator</a> wants to mark it
as for special attention, typically because it may be abusive or
inappropriate. Flagged items are shown in the admin on their own page
(<code>/admim/flagged</code>) so can be more easily managed. This is
especially useful if you have more than one administrator, as you can see
whether other administrators have marked the user or report as
problematic.
<p>
Flagging users is only advisory: it marks them for attention, but does
not ban them. You can ban a user who persists in abusing your
FixMyStreet site by adding them to the <a href="#abuse-list"
class="glossary__link">abuse list</a>.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/users/" | relative_url }}">About users</a> for more about managing
abusive users.
</li>
</ul>
</div>
</dd>
<dt>
<a name="geocoder">geocoder</a>
</dt>
<dd>
The <strong>geocoder</strong> turns the name of a place into a <a
href="#long-lat" style="glossary">long-lat</a> position. FixMyStreet then
uses this to display the appropriate region on the <a href="#map"
class="glossary__link">map</a>.
<p>
FixMyStreet can use the <a href="#osm"
class="glossary__link">OpenStreetMap</a>, Google, or Bing geocoders, or a custom one.
The
<code><a href="{{ "/customising/config/#geocoder" | relative_url }}">GEOCODER</a></code>
setting controls which one your site uses.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/customising/fms_and_mapit/" | relative_url }}">How FixMyStreet uses
MapIt</a> for more about how the geocoder is used.
</li>
</ul>
</div>
</dd>
<dt>
<a name="gettext">gettext</a>
</dt>
<dd>
<strong>gettext</strong> is a set of utitlies provided by the GNU project
to help get translations into software. We use it throughout FixMyStreet
so that anywhere English text appears (the default), it can be replaced
with an appropriate translation in a different language. This presupposes
the text has been translated — the alternative translations are
storied in <code>.po</code> files.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
More about <a href="{{ "/customising/language/" | relative_url }}">translating
FixMyStreet</a>.
</li>
<li>
See the <a href="http://www.gnu.org/software/gettext/">GNU gettext page</a>
for more about the project.
</li>
</ul>
</div>
</dd>
<dt>
<a name="git">git</a> (also GitHub, git repository, and git repo)
</dt>
<dd>
We use a popular source code control system called <strong>git</strong>. This
helps us track changes to the code, and also makes it easy for other people
to duplicate and even contribute to our software.
<p>
The website <a href="https://github.com/mysociety">github.com</a> is a central, public
place where we make our software available. Because it's Open Source, you can
inspect the code there (FixMyStreet is mostly written in the programming language
Perl), report bugs, suggest features and many other useful things.
</p>
<p>
The entire set of files that form the FixMyStreet platform is called the
<strong>git repository</strong> or <strong>repo</strong>. When you
install FixMyStreet, you are effectively cloning our repository on your
own machine.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See the <a href="{{ "/install/" | relative_url }}">installation instructions</a> which will
clone the FixMyStreet repo.
</li>
<li>
Everything about git from the <a
href="http://git-scm.com/">official website</a>.
</li>
<li>
See <a href="https://github.com/mysociety">the mySociety projects on
GitHub</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="integration">integration</a> with bodies' back-end systems
</dt>
<dd>
By default, FixMyStreet sends <a href="#report" class="glossary__link">problem
reports</a> by email. The disadvantage of using email is that many <a
href="#body" class="glossary__link">bodies</a> then need to transfer the
information in the email into their own back-end systems, such as their
works database or customer management system. But FixMyStreet can be
<strong>integrated</strong> with those back ends so the data is passed
directly into them, instead of via email.
<p>
There are three levels of integration:
</p>
<ol>
<li>
problems reports are injected directly into the back end
</li>
<li>
updates made in the back end are automatically passed back into
FixMyStreet
</li>
<li>
problem reports created in the back end (that is, not initiated on
FixMyStreet) are passed into FixMyStreet
</li>
</ol>
<p>
Integration is often related to <a href="#cobrand"
class="glossary__link">cobranding</a>, which is how you can customise the look
and behaviour of your FixMyStreet installation.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
More about <a href="{{ "/customising/integration/" | relative_url }}">integrating FixMyStreet</a>
with back-end systems (includes diagrams)
</li>
<li>
See <a
href="https://www.fixmystreet.com/council">FixMyStreet
for Councils</a> for mySociety's commercial support for UK councils
</li>
<li>
<a href="#open311" class="glossary__link">Open311</a> is the easiest form
of integration.
</li>
</ul>
</div>
</dd>
<dt>
<a name="kml">KML</a> (Keyhole Markup Language)
</dt>
<dd>
<strong>KML</strong> is an open standard XML format for geographic data.
<a href="#mapit" class="glossary__link">MapIt</a> can read KML files. If you need
to provide your own <a href="#area" class="glossary__link">admin boundary</a>
data, you can use common GIS software (such as Google Earth) to create a
KML "shape file" containing the boundaries, and then import them to MapIt.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
Article about <a
href="http://en.wikipedia.org/wiki/Keyhole_Markup_Language">Keyhole
Markup Language</a> on wikipedia.
</li>
<li>
<a href="https://developers.google.com/kml/documentation/">KML documentation</a>
at Google Developers.
</li>
<li>
More about <a href="{{ "/customising/boundaries/" | relative_url }}">admin boundaries</a>
and why you might need to create them yourself.
</li>
</ul>
</div>
</dd>
<dt>
<a name="latlong">lat-long</a>
</dt>
<dd>
A <strong>lat-long</strong> is a pair of coordinates (latitude and
longitude) that describe a location. FixMyStreet sends a lat-long to <a
href="#mapit" class="glossary__link">MapIt</a> when the user clicks on the <a
href="#map" class="glossary__link">map</a>.
<p>
Example lat-long for London, UK: <code>51.5072759,-0.1276597</code>
</p>
</dd>
<dt>
<a name="locale">locale</a>
</dt>
<dd>
A <strong>locale</strong> defines the way things like language, date
formats, and currency should be handled. Locales are identified by codes
like <code>en_GB</code> or <code>hr_HR</code> (these are actually language
and region codes). If you need your installation to present FixMyStreet
using anything other than the default English translations, then the
locale you want <em>must</em> be installed on your server (note —
this is about your <em>server</em>'s configuration, not a FixMyStreet
setting). It's common for servers to support many locales, but not all
locales are installed by default.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See more about <a href="{{ "/customising/" | relative_url }}">customising</a> your
installation, which includes language and translation considerations
</li>
<li>
To see what locales your server currently supports, do <code>locale
-a</code>. You can generate missing locales with
<code>locale-gen</code> — for example, <code>sudo locale-gen
fr_FR.UTF-8</code>
</li>
</ul>
</div>
</dd>
<dt>
<a name="map">map</a>
</dt>
<dd>
FixMyStreet displays a <strong>map</strong> so users can easily pinpoint
the location of the problem they are reporting. By default, these are <a
href="#osm" class="glossary__link">OpenStreetMap</a> tiles displayed using
OpenLayers, but you can configure your installation to use other maps,
including your own custom tiles.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="http://openlayers.org/">OpenLayers</a>, the JavaScript map
library FixMyStreet uses by default
</li>
<li>
<a href="http://leafletjs.com/">Leaflet</a>, another JS map library
</li>
</ul>
</div>
</dd>
<dt>
<a name="mapit">MapIt</a>
</dt>
<dd>
<strong>MapIt</strong> is a web service that manages <a href="#area"
class="glossary__link">administrative boundary areas</a>. More specifically,
FixMyStreet uses this to determine which areas (and hence which <a
href="#body" class="glossary__link">bodies</a>) cover any given location.
<p>
In a nutshell, MapIt accepts a <a href="#latlong"
class="glossary__link">lat-long</a> position, and returns a list of areas.
</p>
<p>
Like FixMyStreet, MapIt is a product by <a
href="https://www.mysociety.org/">mySociety</a>.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="{{ "/customising/fms_and_mapit/" | relative_url }}">How FixMyStreet uses MapIt</a>
</li>
<li>
<a
href="http://global.mapit.mysociety.org/">global.mapit.mysociety.org</a>
is the global MapIt service
</li>
<li>
<a href="https://mapit.mysociety.org/">mapit.mysociety.org</a> is the
UK MapIt service
</li>
<li>
See <a
href="http://mapit.poplus.org/">mapit.poplus.org</a>
for technical information, including how to set up your own
installation
</li>
<li>
See <a href="{{ "/customising/boundaries/" | relative_url }}">more about boundaries</a>,
which define the areas, and the different ways to set them up.
</li>
</ul>
</div>
</dd>
<dt>
<a name="message-manager">Message Manager</a>
</dt>
<dd>
<strong>Message Manager</strong> is a mySociety web application that
can integrate an <a href="#sms" class="glossary__link">SMS</a> gateway
with FixMyStreet.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="https://github.com/mysociety/message-manager/">Message
Manager on GitHub</a>.
</li>
<li>
More about
<a href="{{ "/install/fixmystreet-with-sms/" | relative_url }}">running
FixMyStreet with SMS</a>, and the limitations of doing so.
</li>
</ul>
</div>
</dd>
<dt>
<a name="open311">Open311</a>
</dt>
<dd>
<strong>Open311</strong> is an open standard for making online requests
for a civic service (such as fixing a pothole). FixMyStreet implements
Open311 so it's easy to <a href="#integration"
class="glossary__link">integrate</a> with <a href="#body"
class="glossary__link">bodies</a> whose back-ends also support it.
<p>
Open311 is effectively a more efficient alternative to email as a <a
href="#send-method" class="glossary__link">send method</a>.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
More about <a href="{{ "/customising/integration/" | relative_url }}">integrating FixMyStreet</a>
using Open311 (includes diagrams)
</li>
<li>
mySociety blog post <a
href="https://www.mysociety.org/2013/01/10/open311-introduced/">introducing
Open311</a>
</li>
<li>
mySociety blog post <a
href="https://www.mysociety.org/2013/01/17/open311-explained//">explaining
basic Open311 functionality</a>.
</li>
<li>
<a href="http://www.open311.org/">open311.org</a>, the Open311
project's own website
</li>
</ul>
</div>
</dd>
<dt>
<a name="osm">OpenStreetMap (OSM)</a>
</dt>
<dd>
<strong>OpenStreetMap</strong> is a project that creates and distributes
free geographic data for the world, with an open license. By default,
FixMyStreet's <a href="#map" class="glossary__link">map</a> uses OSM maps.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="http://www.openstreetmap.org/">www.openstreetmap.org</a>
</li>
<li>
<a href="http://wiki.openstreetmap.org/wiki/Main_Page">OpenStreetMap
wiki</a> for technical OSM documentation
</li>
<li>
web interface to <a
href="http://nominatim.openstreetmap.org/">OpenStreetMap's
geocoder</a>
</li>
</ul>
</div>
</dd>
<dt>
<a name="partial">partial report</a>
</dt>
<dd>
Some external applications might create a report by first uploading a photograph
and capturing a description, without identifying the location. This is a
<strong>partial report</strong> and is not shown until it has been completed.
<p>
<em>FixMyStreet itself does not create partial reports</em>, because all problem
reports created within the application always include a location.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
Remember that FixMyStreet uses the location to
<a href="{{ "/fms_and_mapit/" | relative_url }}">determine where to send reports</a>,
so a partial report (having no location) effectively has no
<a href="#body" class="glossary__link">body</a> responsible for it.
</li>
</ul>
</div>
</dd>
<dt>
<a name="report">problem report</a>
</dt>
<dd>
When a FixMyStreet user reports a problem (for example, a pothole or a
broken streetlight), that <strong>problem report</strong> is sent to the
<a href="#body" class="glossary__link">body</a> responsible. Problem reports
remain unpublished until the user confirms them; they may also be hidden
by an administrator. In both cases, the report is still stored in
FixMyStreet's back-end database.
<p>
Users may choose to submit their report anonymously. This means that
their name is not displayed on the website, although it is still sent to
the body.
</p>
<p>
A report may include a photograph.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="{{ "/customising/send_reports/" | relative_url }}">How FixMyStreet sends reports</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="production">production site</a> (also: live, production server)
</dt>
<dd>
A <strong>production server</strong> is one that is running your FixMyStreet site
for real users, with live data. This is different from a
<a href="#development" class="glossary__link">development server</a>, which you use make your
customisation and environment changes and try to get them to all work OK, or a
<a href="#staging" class="glossary__link">staging server</a>, which is used for testing code
and configuration after it's been finished but before it goes live.
<p>
Your production site should be configured to run as efficiently as possible: for
example, with caching disabled, and debugging switched off. Make sure you set
<code><a href="{{ "/customising/config/#staging_site" | relative_url }}">STAGING_SITE</a></code>
to <code>0</code>.
</p>
<p>
If you have a staging server, the system environment of your staging and
production servers should be identical.
</p>
<p>
You should never need to edit code directly on your production server.
We recommend you make any changes to the program code on your
development server, add it to the appropriate branch, test it on a staging
server, and then deploy it directly — that is, from the repo — on production.
</p>
</dd>
<dt>
<a name="send-method">send method</a>
</dt>
<dd>
The <strong>send method</strong> is the way that a <a href="#report"
class="glossary__link">problem report</a> is sent to the <a href="#body"
class="glossary__link">body</a> responsible for fixing it. <em>By default, the
send method is email.</em>
<p>
Alternatives to email are only available if some <a href="#integration"
class="glossary__link">integration</a> with the target body's back-end is
available (for example, if they are using <a href="#open311"
class="glossary__link">Open311</a>).
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="{{ "/customising/send_reports/" | relative_url }}">How FixMyStreet sends
reports</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="staging">staging server</a> (also: staging site)
</dt>
<dd>
A <strong>staging server</strong> is one that you use for testing code or configuration
before it goes live. This is different from a <a href="#development"
class="glossary__link">development server</a>, on which you change the code and settings to
make everything work, or the
<a href="#production" class="glossary__link">production server</a>, which is the
site your users visit running with live data.
<p>
On your staging server, you should set
<code><a href="{{ "/customising/config/#staging_site" | relative_url }}">STAGING_SITE</a></code>
to <code>1</code>.
</p>
<p>
If you have a staging server, the system environment of your staging and
production servers should be identical.
</p>
<p>
You should never need to edit code directly on your staging or production servers.
We recommend you make any changes to the program code on your
development server, add it to the appropriate branch, and then deploy it directly
— that is, from the repo — on staging.
</p>
</dd>
<dt>
<a name="state">state</a>
</dt>
<dd>
A <a href="#report" class="glossary__link">problem report</a> can go through several
<strong>states</strong> in its lifetime. Problems typically start as
<em>unconfirmed</em>, then <em>open</em>, then <em>fixed</em>. There are
other states, including those that can only be allocated by a <a
href="#staff-user" class="glossary__link">staff user</a> or an <a
href="#administrator" class="glossary__link">administrator</a>.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See the <a href="{{ "/running/admin_manual/" | relative_url }}">Administrator's manual</a>
for a more detailed list of problem states.
</li>
</ul>
</div>
</dd>
<dt>
<a name="staff-user">staff user</a>
</dt>
<dd>
A <strong>staff user</strong> is someone on FixMyStreet who works for a <a
href="#body" class="glossary__link">body</a>. This means their <a href=
"#user-account" class="glossary__link">user account</a> is marked as belonging
to that body. This differentiates such accounts from normal users, who are
members of the public.
<p>
A staff user is <strong>not</strong> the same thing as an <a
href="#administrator" class="glossary__link">administrator</a>. A staff user
logs into the public website, like a normal user, but has additional
powers over some reports. An administrator logs into the private admin
and has access to how the whole FixMyStreet site is run.
</p>
<p>
A staff user has additional powers that <em>only apply to <a
href="#report" class="glossary__link">problem reports</a> for their own
body</em>, such as:
</p>
<ul>
<li>
hiding reports
</li>
<li>
setting state of reports to things other than just <em>fixed</em> and
<em>not fixed</em>
</li>
<li>
viewing a <a href="#dashboard" class="glossary__link">dashboard</a> showing
the body's statistics
</li>
</ul>
<p>
Actually, the distinction between an administrator and a staff user, and
the powers staff users have, can vary depending on your installation's <a
href="#cobrand" class="glossary__link">cobrand</a>.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
compare <strong>staff user</strong> to <strong><a href="#administrator"
class="glossary__link">administrator</a></strong>
</li>
<li>
See <a href="{{ "/running/users/" | relative_url }}">About users</a> for more about managing
users, including how to create a staff account.
</li>
</ul>
</div>
</dd>
<dt>
<a name="sms">SMS</a> (Short Message Service, or texting)
</dt>
<dd>
<strong>SMS</strong> is the service for sending text messages across a
phone network. FixMyStreet is primarily a web-based application, but
it is possible to run it so that it can accept
<a href="#report" class="glossary__link">problem reports</a>
over SMS too.
<p>
An <strong>SMS gateway</strong> is a service that passes SMS messages
between the phone network and the internet. This allows you to receive
or send messages from a web application, such as FixMyStreet.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
More about <a
href="{{ "/install/fixmystreet-with-sms/" | relative_url }}">running FixMyStreet with SMS</a>, and the limitations of doing so.
</li>
<li>
<a href="http://en.wikipedia.org/wiki/Short_Message_Service">More about SMS</a>
on wikipedia.
</li>
<li>
The <a href="#message-manager" class="glossary__link">Message Manager</a> web application can be used to integrate FixMyStreet
with an SMS gateway.
</li>
</ul>
</div>
</dd>
<dt>
<a name="survey">survey</a> (or questionnaire)
</dt>
<dd>
By default, FixMyStreet sends out <strong>surveys</strong> (also called
<strong>questionnaires</strong>) to users four weeks after they reported a
problem. The surveys encourage the users who reported each problem to
indicate whether or not the problem has been fixed (if it hasn't already
been marked as such). These surveys help you collect data on the performance
of the <a href="#bodies" class="glossary__link">bodies</a>.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
<a href="{{ "/running/surveys" | relative_url }}">more about surveys</a>
</li>
<li>
Survey data is available to <a href="#administrator"
class="glossary__link">administrators</a> on the Survey page of the admin
</li>
<li>
Survey <a href="#template" class="glossary__link">templates</a> are in
<code>/templates/email/default/questionnaire.txt</code> and
<code>/templates/web/base/questionnaire</code>
</li>
<li>
If you don't want your FixMyStreet site to send out surveys, you can
switch off this behaviour in a <a
href="{{ "/customising/cobrand-module/" | relative_url }}">cobrand module</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="template">template</a>
</dt>
<dd>
FixMyStreet creates its web pages (and emails) using
<strong>templates</strong>. If you want to customise your installation
beyond just changing the colours and logo (that is, using CSS), you can
add new templates for your own <a href="#cobrand"
class="glossary__link">cobrand</a>. You only need to create templates that are
different from the default ones.
<p>
Templates are in the <code>templates/web</code> and
<code>templates/email</code> directories — themselves containing
directories for every cobrand.
</p>
<p>
The web templates use the popular Template Toolkit system. You can
change the templates without needing to know how to write Perl (the
programming language the rest of FixMyStreet is written in).
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See more about using templates to <a
href="{{ "/customising/" | relative_url }}">customise</a> your installation.
</li>
<li>
See the <a href="http://www.template-toolkit.org/">Template Toolkit
website</a>, which is the system the FixMyStreet web templates use.
</li>
</ul>
</div>
</dd>
<dt>
<a name="token">token</a> (also confirmation link)
</dt>
<dd>
By default, FixMyStreet uses confirmation emails containing links as
authorisation where the user is not already logged in. The links
contain unique <strong>tokens</strong> (these look like runs of random
letters and numbers).
<p>
If text authentication is switched on, authentication can also be
performed by text, sending a numeric code to enter in order to proceed.
</p>
<p>
Tokens are typically used to confirm the final part (authorisation) of an
action, and are therefore often related to a specific <a href="#report"
class="glossary__link">report</a>. FixMyStreet generally doesn't delete tokens
after they've been used because (as they often live on in email inboxes)
people sometimes click on old confirmation links to access reports
— so the mapping between token and report is still useful.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
Tokens are implemented using <code>AuthToken</code> from mySociety's
<a href="https://github.com/mysociety/commonlib">commonlib</a>
common library.
</li>
<li>
For details about authorisation and how sessions work, see
<a href="{{ "/running/users/#sessions" | relative_url }}">more about users</a>.
</li>
</ul>
</div>
</dd>
<dt>
<a name="update">update</a>
</dt>
<dd>
Anyone can add an <strong>update</strong> to an existing <a href="#report"
class="glossary__link">problem report</a>. The update can contain a message, a
picture, and even change the report's <a href="#state"
class="glossary__link">state</a>.
<p>
For example, someone can leave an update on a pothole report to say, "I
think the hole is getting bigger!", and add a photograph. Or they can
mark the problem as fixed.
</p>
<p>
<a href="#staff-user" class="glossary__link">Staff users</a> can add more
specific states if they update a problem that belongs to the body they
work for.
</p>
<div class="more-info">
<p>More information:</p>
<ul>
<li>
FixMyStreet supports <strong><a href="#integration"
class="glossary__link">integration</a></strong>, which can enable
automatic updates whenever a body fixes a problem.
</li>
</ul>
</div>
</dd>
<dt>
<a name="user-account">user account</a>
</dt>
<dd>
FixMyStreet creates a <strong>user account</strong> for every user,
identified by the user's email address. An <a href="#administrator"
class="glossary__link">administrator</a> can change the email address, and the
name, of a user account. Optionally, a user account can have a password
associated with it too.
<div class="more-info">
<p>More information:</p>
<ul>
<li>
See <a href="{{ "/running/users/" | relative_url }}">About users</a> for more about managing
users.
</li>
<li>
A <strong><a href="#staff-user" class="glossary__link">staff
user</a></strong> is one whose user account is marked as belonging
to a <a href="#body" class="glossary__link">body</a>.
</li>
</ul>
</div>
</dd>
</dl>
|