Quick typo fix (missing semi-colon)
[sxemacs] / PROBLEMS
1                                                   -*- mode:outline -*-
2
3 At the time of this release (SXEmacs 22.1.14), SXEmacs has the
4 following idiosyncrasies: 
5
6 * File Locations
7 ================
8
9 ** User init file (C-h v user-init-file)
10
11 SXEmacs searches for its init file in `~/.sxemacs/init.el'.
12 Symlinking your old ~/.xemacs directory should be enough to get you up
13 and running.
14
15     $ ln -s ~/.xemacs ~/.sxemacs RET
16
17 BTW, unlike XEmacs, SXEmacs doesn't attempt to "migrate" your old init
18 file or Gnu/Emacs .emacs file.
19
20 ** Packages Hierarchy
21
22 The default location that SXEmacs searches for packages is
23 `$prefix/share/sxemacs/'.  The same as for the user-init-file, a
24 symlink is all you need to get up and running.
25
26     $ ln -s /usr/local/lib/xemacs /usr/local/share/sxemacs RET
27
28
29 * Build Quirks
30 ==============
31
32 ** FFI
33
34 *** FFI is not included with your distro
35
36 Sadly, some Linux distributions (hello Fedora) don't ship a libffi
37 package, and their GCC does NOT include libffi or FFI headers either.
38 In this instance you have 2 options...
39
40   1) Get the standalone package of libffi at
41      <http://sourceware.org/libffi/>.
42
43   2) Compile your own GCC from source, making sure you enable the java
44      compiler.  Enabling java in your GCC build is the only way to get
45      libffi built.
46
47 Obviously, option #1 there is the easiest and quickest path to
48 FFI-enabled SXEmacsen, and it is the option that we recommend.
49
50 Oh, and please nag your distro to have FFI included by default.
51
52 *** FFI is included in your GCC but you see missing header errors
53
54 Often libffi headers aren't completely installed.  If you are getting
55 errors in effi.c that seem to be hinged from something like...
56
57   /usr/include/ffi.h:63:23: ffitarget.h: No such file or directory
58
59 You need to find `ffitarget.h' and put it in the same directory as
60 your `ffi.h'.  Your libffi came with GCC, so you'll find it within
61 your GCC directories:
62
63   $ dirname $(gcc -print-libgcc-file-name)
64 /usr/lib/gcc-lib/i586-pc-linux-gnu/3.3.1
65
66 Using that example, ffitarget.h would be in...
67
68   /usr/lib/gcc-lib/i586-pc-linux-gnu/3.3.1/libffi/
69
70 Just copy or symlink the ffitarget.h there to /usr/include
71
72 *** FFI on SELinux enabled machines
73
74 If you are running with SELinux enabled and configure fails with
75 messages like the following in `config.log'...
76
77   error while loading shared libraries: /usr/local/lib/libffi.so.1:
78   cannot restore segment prot after reloc: Permission denied
79
80 You need to correct the default security context for `libffi.so'.
81
82   $ chcon -t textrel_shlib_t /usr/local/lib/libffi.so
83
84 ** PostgreSQL
85
86 The autoconf tests for PostgreSQL support have changed.  SXEmacs'
87 configure script now uses `pg_config' to determine whether or not to
88 enable PostgreSQL.  Because of this you may have to set you $PATH
89 environment to include the pgsql bin directory.  It is normally
90 `/usr/local/pgsql/bin/'.  Another popular directory on Solaris 9 is
91 `/opt/crw/postgresql/bin/'.  Check with your site administrator.
92
93 Bash users can do it like this...
94
95   export PATH=/usr/local/pgsql/bin:$PATH
96
97 *** Solaris 9 with 64-bit PostgreSQL
98
99 There has also been a report that on Solaris 9 you may also need to
100 configure with `--with-cflags='-mcpu=ultrasparc -m64''.  Apparently
101 GCC on Solaris 9 defaults to building 32-bit, so you lose if you have
102 64-bit PostgreSQL.
103
104 ** 64-bit test suite failure
105
106 We have had a couple of reports of the test suite failing on 64-bit
107 systems.  The error is like this (or similar)...
108
109 Testing /usr/src/sxemacs/modules/ase/ase-heap-tests.el...
110 Loading ase_heap v0.0.0 (SXEmacs module: ase-heap)
111 Loaded module ase_heap v0.0.0 (SXEmacs module: ase-heap)Fatal error: assertion failed, file alloc.c, line 298, block != (void*)0xCAFEBABEDEADBEEF
112 make[3]: *** [check-am] Aborted
113
114 At this point we are not too sure exactly what the issue is.  It looks
115 like it might be a bug in the malloc or free code of the libc.  We do
116 know that not all 64-bit systems are affected, so far, only Fedora
117 Core 7, and Gentoo on x86_64.
118
119 One user has reported that using `-O1' in CFLAGS prevents it.
120
121 But even with this test failure, SXEmacs still runs and opperates
122 without incident.  In fact, the failure can't be reproduced when
123 running the test suite interactively.  With that in mind, it should be
124 safe to install if you see this failure.
125
126 We'll endeavour to get to the bottom of this one ASAP, if you think
127 you can help, let us know.
128
129 ** m4, libtool, autoconf, automake, and whatnot
130
131 SXEmacs tries to cope with any combination of versions of the above
132 programs.  However, there is one lower bound, autoconf 2.60, and
133 unfortunately this has an impact on the other parts of the build
134 tools.
135
136 To cut it really short, here is the minimum known-to-work combination:
137 - autoconf 2.62, automake 1.9.6, libtool 1.5.22, m4 1.4.6
138
139 In general we support (as of April, 2010):
140 - autoconf >= 2.62, including current git versions
141 - automake 1.9.6, 1.10, 1.10a, 1.11.1, and current git versions
142 - libtool 1.5.N with N >= 22, libtool >= 2.1a (current CVS version)
143 - m4 1.4.M with M >= 6 plus current git versions
144
145 Note that many libtool packages shipped with the distros (OpenSuSE,
146 Debian, just to name two) are _broken_.  Make sure you compile
147 your own libtool in case you want to rerun autogen.sh or bootstrap
148 the build chain, and double check that you use --enable-ltdl-install
149 when doing so.
150
151 If you are on a platform that has its own _non_gnu libtool (like OS/X
152 Leopard) add --program-prefix=g to your gnu libtool configure so it
153 installs as glibtool and doesn't clobber your other one.
154
155 Sometimes it helps just to copy over the libtool script manually:
156 cp -a $(type -p libtool) ${top_builddir}
157
158 *** ylwrap fails with sed errors
159
160 Some versions of the ylwrap script provided by autotools uses commas
161 as separators in sed commands. As such if your build path uses commas
162 the ylwrap will fail. 
163
164 Sample message (where the build path was /Users/njsf/Projects/SXEmacs/nsx-up/,,mac):
165
166 /Users/njsf/Projects/SXEmacs/nsx-up/,,mac/lib-src/make-docfile --modname cl-loop -E cl-loop.doc.c ../../../modules/cl/cl-loop.c
167 /bin/sh ../../../ylwrap ../../../modules/cl/cl-loop-parser.y y.tab.c cl-loop-parser.c y.tab.h cl-loop-parser.h y.output
168 cl-loop-parser.output -- bison -y  -d
169 sed: 1: "s,/Users/njsf/Projects/ ...": bad flag in substitute command: 'm'
170 sed: 1: "s,/Users/njsf/Projects/ ...": bad flag in substitute command: 'm'
171
172 The workaround is to use a path without commas in it.
173
174
175 *** Missing libltdl.la (Solaris 2.8)
176
177 We've had a report that missing libtool on Solaris 2.8 isn't detected
178 and so the included libtool still isn't used.  If you see an error
179 about a missing libltdl.la all you need to do is configure SXEmacs
180 with... 
181
182   --with-included-ltdl
183
184 ** configure
185
186 *** configure on FreeBSD, NetBSD, OpenBSD, etc.
187
188 Building SXEmacs on *BSD as far as we know requires the GNU Bourne
189 Again SHell (bash) versions 3 or 4.
190
191 bash is available for all tier 1 architectures as a binary package and 
192 and for tier 2/3 as a port.
193
194 To run configure successfully...
195
196     CONFIG_SHELL=/path/to/bash $CONFIG_SHELL configure [option, ...]
197
198 ** bdwgc and gcc and code optimisation
199
200 There are some weird optimisation issues with the Boehm-Demers-Weiser
201 garbage collector (hereafter BDWGC) and the GCC C compilers of the 2 and
202 3 series.  The build will crash like this:
203
204   Loading build-autoloads.el...
205   Loading loadup-el.el...
206   Loading loadup.el...make[3]: *** [auto-autoloads.el] Segmentation fault
207   (core dumped)
208   make[3]: Leaving directory
209
210 The C backtrace will look like:
211
212   #0  0xbff9a2f0 in ?? ()
213   #1  0xb7eaf7d6 in GC_invoke_finalizers () at finalize.c:787
214   #2  0xb7eaf8ed in GC_notify_or_invoke_finalizers () at finalize.c:844
215   #3  0xb7eb2c8c in GC_generic_malloc (lb=32, k=0) at malloc.c:190
216
217 If this is true for you, you may want to try another optimisation level:
218
219   ./configure CFLAGS="-g -O2"
220
221 If this still does not work out either dispense with BDWGC support or
222 use a recent C compiler.  ATTOW, all GCC 4.x compilers (including SVN)
223 should work.
224
225 ** ENT
226
227 ENT is basically a conglomerate of internally and externally implemented
228 arithmetics.  Hence it supports a number of libraries, some of which
229 overlap in their functionality, some others do not but then break at the
230 compatibility layer.
231
232 One of the most likely problems is the GMP vs. MPFR issue.  In past
233 times, mpfr (a multiprecision library for floats with exact rounding
234 facilities) has been a part of the GMP distribution.  Later on, mpfr got
235 separated from it and has been developed independently while the version
236 of mpfr which ships with GMP stayed the same.  Now that scenario is
237 exactly the problem.
238
239 Inattentive distributions (like Fedora) still deliver packages of GMP
240 with the old'n'incompatible mpfr library.  SXEmacs will disable the MPFR
241 support on such systems by default (at configure time).  However, if you
242 install a supported version of mpfr in parallel to the packaged ones on
243 such a system SXEmacs autodetection correctly reports that a sane
244 version of mpfr is available and enables it.  Nonetheless, the according
245 build may fail (or the build may even succeed but calling the binary may
246 fail), like this:
247
248 number-mpfr.o: In function `ent_lt_BIGFR_T':
249 /home/martin/src/edit/sxemacs-main/src/number-mpfr.c:661: undefined
250 reference to `mpfr_less_p'
251 number-mpfr.o: In function `ent_gt_BIGFR_T':
252 /home/martin/src/edit/sxemacs-main/src/number-mpfr.c:671: undefined
253 reference to `mpfr_greater_p'
254 ...
255
256 Especially note that we _only_ support the standalone version of MPFR,
257 and not the one distributed with GMP.
258
259 Solution:
260 ---------
261 Either:
262    Badger your distributor and demand separate packages for GMP and
263    MPFR.
264 Or:
265    Remove the GMP package and install your own build -- available at
266    http://swox.com/gmp -- afterwards install your own build of mpfr (the
267    one from http://www.mpfr.org)
268
269 Reconfigure and rebuild SXEmacs afterwards.
270
271
272 * XEmacs Packages
273 =================
274
275 We have identified 2 packages so far that don't work "out of the box"
276 with SXEmacs.  In both of these the problem is with parsing version
277 information.  Patches have been sent to the appropriate maintainer to
278 fix the problem and are included here in case the packages haven't
279 been updated by the time you install SXEmacs.
280
281 Update:  The EFS, and Dired XEmacs packages that are currently
282 available from the "Pre-Releases" area of XEmacs package mirrors are
283 both now compatible with SXEmacs and do not need the patches mentioned
284 here.
285
286 ** EFS
287
288 Here is the patch to make EFS work with SXEmacs:
289
290 (Note: the current EFS package that XEmacs distributes has this
291 patch installed) 
292
293 Index: ChangeLog
294 ===================================================================
295 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/ChangeLog,v
296 retrieving revision 1.41
297 diff -u -U0 -r1.41 ChangeLog
298 --- ChangeLog   4 Oct 2004 08:54:56 -0000       1.41
299 +++ ChangeLog   14 Jan 2005 02:43:10 -0000
300 @@ -0,0 +1,6 @@
301 +2005-01-14  Steve Youngs  <steve@sxemacs.org>
302 +
303 +       * efs-fnh.el (efs-handle-emacs-version): Use `emacs-*-version'
304 +       variables for version info instead of string-matching through
305 +       `emacs-version'. 
306 +
307 Index: efs-fnh.el
308 ===================================================================
309 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/efs/efs-fnh.el,v
310 retrieving revision 1.13
311 diff -u -u -r1.13 efs-fnh.el
312 --- efs-fnh.el  2 Oct 2004 14:06:00 -0000       1.13
313 +++ efs-fnh.el  14 Jan 2005 02:42:59 -0000
314 @@ -36,15 +36,17 @@
315    (let ((ehev-match-data (match-data)))
316      (unwind-protect
317         (let ((xemacsp (string-match "XEmacs" emacs-version))
318 -             ver subver)
319 -         (or (string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)" emacs-version)
320 -             (error "efs does not work with emacs version %s" emacs-version))
321 -         (setq ver (string-to-int (substring emacs-version
322 -                                             (match-beginning 1)
323 -                                             (match-end 1)))
324 -               subver (string-to-int (substring emacs-version
325 -                                                (match-beginning 2)
326 -                                                (match-end 2))))
327 +             (ver emacs-major-version)
328 +             (subver emacs-minor-version))
329 +         (unless ver
330 +           (or (string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)" emacs-version)
331 +               (error "efs does not work with emacs version %s" emacs-version))
332 +           (setq ver (string-to-int (substring emacs-version
333 +                                               (match-beginning 1)
334 +                                               (match-end 1)))
335 +                 subver (string-to-int (substring emacs-version
336 +                                                  (match-beginning 2)
337 +                                                  (match-end 2)))))
338           (cond
339            
340            ;; XEmacs (emacs-version looks like \"19.xx XEmacs\")
341
342 ** Dired
343
344 Here is the patch to make Dired work with SXEmacs:
345
346 (Note: the current Dired package that XEmacs distributes has this
347 patch installed) 
348
349 Index: ChangeLog
350 ===================================================================
351 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/dired/ChangeLog,v
352 retrieving revision 1.19
353 diff -u -U0 -r1.19 ChangeLog
354 --- ChangeLog   4 Oct 2004 08:54:24 -0000       1.19
355 +++ ChangeLog   14 Jan 2005 02:37:37 -0000
356 @@ -0,0 +1,7 @@
357 +2005-01-14  Steve Youngs  <steve@sxemacs.org>
358 +
359 +       * dired.el: Use `emacs-*-version' variables for finding version
360 +       information instead of string-matching through `emacs-version'.
361 +
362 +       * diff.el (diff-emacs-19-p): Ditto.
363 +
364 Index: diff.el
365 ===================================================================
366 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/dired/diff.el,v
367 retrieving revision 1.4
368 diff -u -u -r1.4 diff.el
369 --- diff.el     2 Oct 2004 14:06:17 -0000       1.4
370 +++ diff.el     14 Jan 2005 02:37:23 -0000
371 @@ -72,7 +72,7 @@
372  ;;; Internal variables
373  
374  (defconst diff-emacs-19-p
375 -  (let ((ver (string-to-int (substring emacs-version 0 2))))
376 +  (let ((ver emacs-major-version))
377      (>= ver 19)))
378  
379  (or diff-emacs-19-p (require 'emacs-19))
380 Index: dired.el
381 ===================================================================
382 RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/dired/dired.el,v
383 retrieving revision 1.7
384 diff -u -u -r1.7 dired.el
385 --- dired.el    2 Oct 2004 14:06:19 -0000       1.7
386 +++ dired.el    14 Jan 2005 02:37:25 -0000
387 @@ -80,13 +80,15 @@
388  ;; Testing against the string `Lucid' breaks InfoDock.  How many years has
389  ;; it been since Lucid went away?
390  (let ((lucid-p (string-match "XEmacs" emacs-version))
391 -      ver subver)
392 -  (or (string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)" emacs-version)
393 -      (error "dired does not work with emacs version %s" emacs-version))
394 -  (setq ver (string-to-int (substring emacs-version (match-beginning 1)
395 -                                     (match-end 1)))
396 -       subver (string-to-int (substring emacs-version (match-beginning 2)
397 -                                        (match-end 2))))
398 +      (ver emacs-major-version)
399 +      (subver emacs-minor-version))
400 +  (unless ver
401 +    (or (string-match "^\\([0-9]+\\)\\.\\([0-9]+\\)" emacs-version)
402 +       (error "dired does not work with emacs version %s" emacs-version))
403 +    (setq ver (string-to-int (substring emacs-version (match-beginning 1)
404 +                                       (match-end 1)))
405 +         subver (string-to-int (substring emacs-version (match-beginning 2)
406 +                                          (match-end 2)))))
407    (cond
408     ((= ver 18)
409      (require 'emacs-19)
410 @@ -6616,11 +6618,12 @@
411  ;;;; --------------------------------------------------------------
412  
413  (let ((lucid-p (string-match "XEmacs" emacs-version))
414 -      ver)
415 -  (or (string-match "^\\([0-9]+\\)\\." emacs-version)
416 -      (error "Weird emacs version %s" emacs-version))
417 -  (setq ver (string-to-int (substring emacs-version (match-beginning 1)
418 -                                     (match-end 1))))
419 +      (ver emacs-major-version))
420 +  (unless ver
421 +    (or (string-match "^\\([0-9]+\\)\\." emacs-version)
422 +       (error "Weird emacs version %s" emacs-version))
423 +    (setq ver (string-to-int (substring emacs-version (match-beginning 1)
424 +                                       (match-end 1)))))
425  
426    ;; Reading with history.
427    (if (>= ver 19)
428
429
430 * Problems with running SXEmacs
431 ===============================
432
433 ** FFI Related
434
435 *** ffi-wand.el refuses to load.
436
437 Can't load library `libMagickWand': libgomp.so.1: shared object cannot be
438 dlopen()ed
439
440 If you get that error when trying to load ffi-wand, it is because you
441 have a ImageMagick that is using OpenMP (currently only svn HEAD).  To
442 fix this you will need to rebuild ImageMagick, making sure that you
443 configure it using --disable-openmp.
444
445 See: <http://issues.sxemacs.org/show_bug.cgi?id=104>
446
447 ** Multimedia Goodness
448
449 *** SXEmacs hangs or crashes during (init-asynchronousity).
450
451 This is most likely a known effect (we do not want to call it bug,
452 since there is no definite location) with certain (g)libc and kernel
453 combinations under Linux.  If it crashes analyse the core file, it
454 should look like this:
455
456 #0  0x4014ebc4 in __sigsuspend (set=0xbffffbb4) at 
457 ../sysdeps/unix/sysv/linux/sigsuspend.c:48
458 #1  0x40101b34 in __pthread_wait_for_restart_signal (self=0x401116e0) at 
459 pthread.c:786
460 #2  0x40101138 in __pthread_create_2_1 (thread=0x206f8dc, attr=0xbffffc58, 
461 start_routine=0x20043ac <console>, arg=0xbffffd88) at restart.h:26
462
463 A definite fault-prone setup is using kernel 2.6.x in conjunction with
464 glibc-2.1.1.
465
466 *** SXEmacs hangs or crashes before it ought to playback sound.
467
468 As before, this is most likely a suspicious (g)libc/kernel
469 combination.
470
471 *** SXEmacs dumps core when using the ALSA audio device
472
473 This has been reported to happen with old ALSA libraries (1.0.3 to be
474 precise).  At the moment it is uncertain at which version these
475 problems disappear (no developer wants to downgrade to a non-working
476 ALSA :D).  We highly suggest to use the version 1.0.10 and above, or
477 not use ALSA at all.
478
479 *** SXEmacs in async mode does not play simultaneous sounds with ALSA
480
481 This is due to missing (hardware-)mixing capabilities of your
482 soundcard.  There is a user-space plugin called dmix, which can
483 effectively circumvent this issue.
484
485 *** SXEmacs dumps core when using the aRts audio device
486
487 Does it?  Please report details (version number of aRts, backtrace,
488 etc.).
489
490 *** SXEmacs crashes when using state sentinels with asynchronous sounds
491
492 This is a known bug (#13 in our bug database).  At the moment the only
493 advise we can give is: do not use sentinels before 22.1.7.
494 Also see our bug database at http://issues.sxemacs.org
495
496 *** make-media-stream seems to recognise any file as valid audio
497
498 This is a known issue with fully-featured ffmpeg builds.  The current
499 code in SXEmacs blindly relies on FFmpeg when it reports a file or
500 string as valid audio.  There is no way to double-check that at the
501 moment.  However, you can perform the additional check yourself if
502 you have taglib installed.  Use the included ffi-taglib.el.
503
504
505 * Original XEmacs PROBLEMS File
506 ===============================
507 From here down is a reproduction of the original XEmacs PROBLEMS
508 file.  Much of it is already fixed in SXEmacs (and in XEmacs too).
509 We're keeping it here for prosperity, or until somebody finds the time
510 to go through it all and remove the irrelevant stuff. :-)
511
512 Note: Some irrelevant stuff purged (mostly windows rubbish) 2010-04-01
513
514 This file describes various problems that have been encountered
515 in compiling, installing and running XEmacs.  It has been updated for
516 XEmacs 21.5.
517
518 This file is rather large, but we have tried to sort the entries by
519 their respective relevance for XEmacs, but may have not succeeded
520 completely in that task.  The file is divided into four parts:
521
522  - Problems with building XEmacs
523  - Problems with running XEmacs
524  - Compatibility problems
525  - Mule issues
526
527 Use `C-c C-f' to move to the next equal level of outline, and
528 `C-c C-b' to move to previous equal level.  `C-h m' will give more
529 info about the Outline mode.
530
531 Also, Try finding the things you need using one of the search commands
532 XEmacs provides (e.g. `C-s').
533
534 General advice:
535
536     WATCH OUT for your init file! (~/.xemacs/init.el or ~/.emacs)  If
537     you observe strange problems, invoke XEmacs with the `-vanilla'
538     option and see if you can repeat the problem.
539
540     Note that most of the problems described here manifest at RUN
541     time, even those described as BUILD problems.  It is quite unusual
542     for a released XEmacs to fail to build.  So a "build problem"
543     requires you to tweak the build environment, then rebuild XEmacs.
544     A "runtime problem" is one that can be fixed by proper
545     configuration of the existing build.  Compatibility problems and
546     Mule issues are generally runtime problems, but are treated
547     separately for convenience.
548
549
550 * Problems with building XEmacs
551 ===============================
552
553 ** General
554
555     Much general information is in INSTALL.  If it's covered in
556     INSTALL, we don't repeat it here.
557
558 *** How do I configure to get the buffer tabs/progress bars?
559
560 These features depend on support for "native widgets".  Use the
561 --with-widgets option to configure.  Configuration of widgets is
562 automatic for "modern" toolkits (MS Windows, GTK, and Motif), but if
563 you are using Xt and the Athena widgets, you will probably want to
564 specify a "3d" widget set.  See configure --usage, and don't forget to
565 install the corresponding development libraries.
566
567 *** I know I have libfoo installed, but configure doesn't find it.
568
569 Typical of Linux systems with package managers.  To link with a shared
570 library, you only need the shared library.  To compile objects that
571 link with it, you need the headers---and distros don't provide them with
572 the libraries.  You need the additional "development" package, too.
573
574 *** When using gcc, you get the error message "undefined symbol __fixunsdfsi".
575 When using gcc, you get the error message "undefined symbol __main".
576
577 This means that you need to link with the gcc library.  It may be called
578 "gcc-gnulib" or "libgcc.a"; figure out where it is, and define LIB_GCC in
579 config.h to point to it.
580
581 It may also work to use the GCC version of `ld' instead of the standard one.
582
583 *** src/Makefile and lib-src/Makefile are truncated--most of the file missing.
584
585 This can happen if configure uses GNU sed version 2.03.  That version
586 had a bug.  GNU sed version 2.05 works properly.
587
588 ** Motif
589
590 Motif is the X11 version of the Gnus torture test: if there's a way to
591 crash, Motif will find it.  With the open source release of Motif, it