diff --git a/MailingListsGuidelines.md b/MailingListsGuidelines.md
new file mode 100644
index 0000000..3ff0137
--- /dev/null
+++ b/MailingListsGuidelines.md
@@ -0,0 +1,127 @@
+The [Melange](MelangeIntro.md) community uses some mailing lists as the
+primary method of communication.  Our goal is to use these mailing lists
+to support the development of the [SoC framework](SoCOverview.md) and
+Melange web applications, and to assist the organizations
+and users that rely on that framework to participate in programs such
+as [Google Summer of Code](GSoC.md) <sup>TM</sup>.  Our guidelines for using these
+mailing lists have been written with this goal in mind.  Like the other
+guidelines related to participating in the Melange project, the Melange
+contributors, in cooperation with the community at large, will update
+these guidelines as needed.
+
+We encourage participation on these mailing lists, but we also ask that
+participants treat each other with mutual respect and remember that the
+ultimate goal is to promote the development and use of open source and
+free software.
+
+These mailing lists are hosted on [Google Groups](http://groups.google.com)
+and share some common access settings.
+
+"Project owners" of the [SoC project](http://code.google.com/p/soc/) hosted on
+[Google Code](http://code.google.com) are, by default (unless they decline),
+made owners of all Google Groups used by the Melange project.  Similarly,
+"project members" are, by default (again, unless they decline), made
+managers of both of these Google Groups.
+
+Group content (mailing list archives and discussions) can be viewed by
+the public at large on all of Melange lists.  To help prevent list spam, only
+actual group members can post to the mailing lists and discussions.  To
+prevent email spam, only owners and managers can view the corresponding
+Google Groups membership lists.
+
+Due to lack of revision control in Google Groups, the Google Code wiki
+is preferred for all documentation, and `svn` for files (usually, but
+not necessarily, source code).  The Pages and Files sections of the
+Google Groups used by the Melange project have been disabled and will not
+be used.
+
+## General discussion list
+
+The primary mailing list used by the Melange project is the `melange-soc`
+[discussion mailing list](http://groups.google.com/group/melange-soc).
+
+To post to the mailing list, membership is required, but normal group
+membership (with the limitations described above) is not restricted and
+is open to anyone.  To sign up, visit http://groups.google.com/group/melange-soc
+
+## Developer list
+
+The mailing list used for development discussions (such as
+[code reviews](ContributionReviews#Code_reviews.md)) is the `melange-soc-dev`
+[developer mailing list](http://groups.google.com/group/melange-soc-dev).
+
+Please keep in mind that this list is intended for current and potential
+contributors to the Melange project, not for reporting issues or making
+feature requests.  (Issues can be reported and new
+features requested using the
+[issue tracker](http://code.google.com/p/soc/issues/list) on
+[Google Code](http://code.google.com/)).  Participation on this developer
+mailing list (and in the
+[IRC channel](IrcChannelGuidelines.md)) is the "gateway" to earning commit
+access in the SoC project hosted on [Google Code](http://code.google.com/).
+
+## Issues list
+
+The mailing list used by the `soc@googlecode.com` account on
+[Google Code](http://code.google.com/)
+when comments are made in the
+[issue tracker](http://code.google.com/p/soc/issues/list)
+and on
+[wiki pages](http://code.google.com/p/soc/wiki)
+is the `melange-soc-issues`
+[issues mailing list](http://groups.google.com/group/melange-soc-issues).
+
+This list should probably be treated mostly as an "announcement" list,
+since any discussion carried on using the mailing list, instead of in
+the issue tracker or wiki comments systems, will not be recorded back
+on Google Code.  This leaves someone reading the issue or wiki comments
+via Google Code web interface with an incomplete picture.  That being
+said, the community will use this mailing list whichever way works
+best, and people can always venture over to the `melange-soc-issues`
+[Google Group](http://groups.google.com/group/melange-soc-issues)
+to see what they are missing.
+
+Please use the
+[Melange project issue tracker](http://code.google.com/p/soc/issues/list) on
+[Google Code](http://code.google.com/) to report new issues or make feature
+requests, instead of the mailing lists.
+
+## Commits list
+
+The mailing list used for SVN commit messages sent out by the
+`soc@googlecode.com` account on
+[Google Code](http://code.google.com/) is the `melange-soc-commits`
+[svn commits mailing list](http://groups.google.com/group/melange-soc-commits).
+
+Please consider forwarding any replies you might have to a commit
+message to the original `melange-soc-dev`
+[developer mailing list](MailingListsGuidelines#Developer_list.md)
+instead of this list, so that discussions can take place there, in
+front of a wider audience. This mailing list exists by request,
+merely to make filtering and sorting of `svn commit` noise easier.
+
+Please use the
+[Melange project issue tracker](http://code.google.com/p/soc/issues/list) on
+[Google Code](http://code.google.com/) to report issues or make feature requests,
+instead of the mailing lists.
+
+## Build list
+
+The mailing list used for discussing passing and failing tests and other build health issues is the `melange-soc-build` [build health mailing list](http://groups.google.com/group/melange-soc-build).
+
+## Abuse
+
+List owners and managers reserve the right to decide what constitutes
+abuse on the [Google Groups](http://groups.google.com) mailing lists used by
+the Melange project.  While spirited debate is encouraged in order to
+stimulate creativity and produce web applications of which we can all
+be proud, list participants are expected to respect the fellow list
+participants and the Melange community guidelines.
+
+
+---
+
+_Copyright 2008 Google Inc._
+_This work is licensed under a_
+[Creative Commons Attribution 2.5 License](http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html).
+[![](http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png)](http://creativecommons.org/licenses/by/2.5/)
\ No newline at end of file
diff --git a/MailingListsGuidelines.wiki b/MailingListsGuidelines.wiki
deleted file mode 100644
index cc96626..0000000
--- a/MailingListsGuidelines.wiki
+++ /dev/null
@@ -1,128 +0,0 @@
-#summary Guidelines for Melange mailing lists
-#labels Contents-Complete,Phase-Guidelines,Importance-Useful
-
-The [MelangeIntro Melange] community uses some mailing lists as the
-primary method of communication.  Our goal is to use these mailing lists
-to support the development of the [SoCOverview SoC framework] and
-Melange web applications, and to assist the organizations
-and users that rely on that framework to participate in programs such
-as [GSoC Google Summer of Code] ^TM^.  Our guidelines for using these
-mailing lists have been written with this goal in mind.  Like the other
-guidelines related to participating in the Melange project, the Melange
-contributors, in cooperation with the community at large, will update
-these guidelines as needed.
-
-We encourage participation on these mailing lists, but we also ask that
-participants treat each other with mutual respect and remember that the
-ultimate goal is to promote the development and use of open source and
-free software.
-
-These mailing lists are hosted on [http://groups.google.com Google Groups]
-and share some common access settings.
-
-"Project owners" of the [http://code.google.com/p/soc/ SoC project] hosted on
-[http://code.google.com Google Code] are, by default (unless they decline),
-made owners of all Google Groups used by the Melange project.  Similarly,
-"project members" are, by default (again, unless they decline), made
-managers of both of these Google Groups.
-
-Group content (mailing list archives and discussions) can be viewed by
-the public at large on all of Melange lists.  To help prevent list spam, only
-actual group members can post to the mailing lists and discussions.  To
-prevent email spam, only owners and managers can view the corresponding
-Google Groups membership lists.
-
-Due to lack of revision control in Google Groups, the Google Code wiki
-is preferred for all documentation, and `svn` for files (usually, but
-not necessarily, source code).  The Pages and Files sections of the
-Google Groups used by the Melange project have been disabled and will not
-be used.
-
-== General discussion list ==
-
-The primary mailing list used by the Melange project is the `melange-soc`
-[http://groups.google.com/group/melange-soc discussion mailing list].
-
-To post to the mailing list, membership is required, but normal group
-membership (with the limitations described above) is not restricted and
-is open to anyone.  To sign up, visit http://groups.google.com/group/melange-soc
-
-== Developer list ==
-
-The mailing list used for development discussions (such as
-[ContributionReviews#Code_reviews code reviews]) is the `melange-soc-dev`
-[http://groups.google.com/group/melange-soc-dev developer mailing list].
-
-Please keep in mind that this list is intended for current and potential
-contributors to the Melange project, not for reporting issues or making
-feature requests.  (Issues can be reported and new
-features requested using the 
-[http://code.google.com/p/soc/issues/list issue tracker] on
-[http://code.google.com/ Google Code]).  Participation on this developer
-mailing list (and in the
-[IrcChannelGuidelines IRC channel]) is the "gateway" to earning commit
-access in the SoC project hosted on [http://code.google.com/ Google Code].
-
-== Issues list ==
-
-The mailing list used by the `soc@googlecode.com` account on
-[http://code.google.com/ Google Code]
-when comments are made in the
-[http://code.google.com/p/soc/issues/list issue tracker]
-and on
-[http://code.google.com/p/soc/wiki wiki pages]
-is the `melange-soc-issues`
-[http://groups.google.com/group/melange-soc-issues issues mailing list].
-
-This list should probably be treated mostly as an "announcement" list,
-since any discussion carried on using the mailing list, instead of in
-the issue tracker or wiki comments systems, will not be recorded back
-on Google Code.  This leaves someone reading the issue or wiki comments
-via Google Code web interface with an incomplete picture.  That being
-said, the community will use this mailing list whichever way works
-best, and people can always venture over to the `melange-soc-issues`
-[http://groups.google.com/group/melange-soc-issues Google Group]
-to see what they are missing.
-
-Please use the 
-[http://code.google.com/p/soc/issues/list Melange project issue tracker] on
-[http://code.google.com/ Google Code] to report new issues or make feature
-requests, instead of the mailing lists.
-
-== Commits list ==
-
-The mailing list used for SVN commit messages sent out by the
-`soc@googlecode.com` account on
-[http://code.google.com/ Google Code] is the `melange-soc-commits`
-[http://groups.google.com/group/melange-soc-commits svn commits mailing list]. 
-
-Please consider forwarding any replies you might have to a commit
-message to the original `melange-soc-dev`
-[MailingListsGuidelines#Developer_list developer mailing list]
-instead of this list, so that discussions can take place there, in
-front of a wider audience. This mailing list exists by request,
-merely to make filtering and sorting of `svn commit` noise easier.
-
-Please use the 
-[http://code.google.com/p/soc/issues/list Melange project issue tracker] on
-[http://code.google.com/ Google Code] to report issues or make feature requests,
-instead of the mailing lists.
-
-== Build list ==
-
-The mailing list used for discussing passing and failing tests and other build health issues is the `melange-soc-build` [http://groups.google.com/group/melange-soc-build build health mailing list].
-
-== Abuse ==
-
-List owners and managers reserve the right to decide what constitutes
-abuse on the [http://groups.google.com Google Groups] mailing lists used by
-the Melange project.  While spirited debate is encouraged in order to
-stimulate creativity and produce web applications of which we can all
-be proud, list participants are expected to respect the fellow list
-participants and the Melange community guidelines.
-
-----
-_Copyright 2008 Google Inc._
-_This work is licensed under a_
-[http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
-[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]
\ No newline at end of file
