diff --git a/GSoC2014Ideas.md b/GSoC2014Ideas.md
new file mode 100644
index 0000000..737be31
--- /dev/null
+++ b/GSoC2014Ideas.md
@@ -0,0 +1,122 @@
+**Melange** is the software that powers Google Summer of Code. If improving the way that Google Summer of Code is run as your Google Summer of Code project sounds attractively recursive, please read on!
+
+# Ideas!
+
+We welcome your ideas, whatever they might be for Melange - but here are a few of our own for what we think might be good student summer projects:
+
+## Parameterized Layout
+
+Isn't it a bummer that the homepage for Google Summer of Code 2014 looks almost exactly the same as the homepage for GSoC 2013? And 2012, and 2011? We'd like to afford programs greater freedom in their graphic presentation on Melange. To do that, we'll need to support multiple program presentations, and support programs choosing one presentation over another. We'll also need to make decisions about how much a program's graphic presentation can be made customizable versus how much must be programmatically fixed.
+
+**Captured Issues:**<a href='https://code.google.com/p/soc/issues/detail?id=1615'>1615</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1616'>1616</a>.
+
+**Relevant Skills:** Python, App Engine, HTML, CSS, Javascript, LESS
+
+**Probable Mentor:** Nathaniel Manista, Mario Ferraro
+
+## Responsive Layout
+
+Isn't it a bummer that Melange's pages don't fit on your phone's screen? Modern web sites are written with the entire ecosystem of web-enabled devices in mind and cooperate with the user's device toward the goal of best displaying themselves on the screen available to them. Melange should too.
+
+**Captured Issues:**<a href='https://code.google.com/p/soc/issues/detail?id=1516'>1516</a>.
+
+**Relevant Skills:** HTML, CSS, Javascript, LESS
+
+**Probable Mentor:** Nathaniel Manista, Mario Ferraro
+
+## Javascript Tests
+
+Melange has a great deal of Javascript code that needs to be refined and tested.
+We already have a testing architecture in place (using Testem, Jasmine, PhantomJS) but we need to start writing tests.
+
+**Relevant Skills:** Javascript
+
+**Probable Mentor:** Mario Ferraro
+
+## User data dashboard and dependencies
+
+The project would be to implement a simple dashboard that would list all artifacts associated with the specified user or profile. It would look somehow like a tree (or a graph, to be more precise). A very simple example is outlined below:
+
+  * userA
+    * profileA
+      * proposalA
+        * commentA
+      * proposalB
+        * commentA
+        * commentB
+        * commentC
+      * projectA
+        * codeSubmissionA
+        * evaluationA
+    * profileB
+      * commentA
+etc.
+
+It would help us understand what the exact layout of our data design is and what exactly has to be processed so that data is not broken after an account is deleted. It looks relatively easy, but it definitely is not. There are at least two open end questions:
+
+  * how to present the data
+  * how to collect the data so that it does not break down when a user has a lot of artifacts, for example comments.
+
+Another part of this project would be to generate a graph of reverse references of models. It would give us visualization of what dependencies between the models are.
+
+**Relevant Skills:** AppEngine, Python
+
+**Probable Mentor:** Daniel Hans
+
+## Resource Hosting
+
+Running a program on Melange involves distributing a lot of documents and serving a lot of content - from user images to translated contest rules and everything in between. Melange doesn't yet have a subsystem that makes resource ingestion, hosting, and distribution easy for both users and feature developers. It should.
+
+**Captured Issues:**<a href='https://code.google.com/p/soc/issues/detail?id=1672'>1672</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1874'>1874</a>.
+
+**Relevant Skills:** App Engine, Python
+
+**Probable Mentor:** Nathaniel Manista, Daniel Hans
+
+## Student Flow
+
+On Melange, signing up as a student and applying for summer projects is harder than it should be. We would love to see a student project focused on making the whole process easier.
+
+**Captured Issues:**<a href='https://code.google.com/p/soc/issues/detail?id=1530'>1530</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1759'>1759</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1816'>1816</a>.
+
+**Relevant Skills:** Javascript, Python, HTML and CSS
+
+**Probable Mentor:** Nathaniel Manista, Madhusudan C.S., Daniel Hans
+
+## Mentor Flow
+
+On Melange, participating as a mentor is harder than it should be. We would love to see a student project focused on making the mentor experience better.
+
+**Captured Issues:**<a href='https://code.google.com/p/soc/issues/detail?id=515'>515</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1216'>1216</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1240'>1240</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1306'>1306</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1496'>1496</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1524'>1524</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1525'>1525</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1541'>1541</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1701'>1701</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1788'>1788</a>, <a href='https://code.google.com/p/soc/issues/detail?id=1850'>1850</a>.
+
+**Relevant Skills:** Python, HTML, Javascript, CSS
+
+**Probable Mentor:** Nathaniel Manista, Daniel Hans, Madhusudan C.S.
+
+## Renovate Our Test Data Seeder
+
+Melange uses a test data seeder to generate fake program data for both its test suite and for use during development. Our old test data seeder has proven somewhat hard to work with and has broken several times during recent changes because it itself is not covered by our tests. Our long-term goal is to run several Melange programs inside our test suite, and we would be excited to receive student proposals that would move us toward that objective by affording us an updated, more usable, and more maintainable data seeder.
+
+**Relevant Skills:** Python, App Engine
+
+**Probable Mentor:** Nathaniel Manista, Daniel Hans, Chong Liu (Leo), Madhusudan C.S.
+
+## Port Melange to AMD
+
+Currently Melange is using <a href='http://labjs.com/'>LABjs</a> to asynchronously load all JS files, using an home-made <a href='https://code.google.com/p/soc/source/browse/app/soc/content/js/melange.dependency.js'>dependency system</a>. LABjs, however, is now deprecated. We would like to port our JS loading to use AMD and, specifically, <a href='http://requirejs.org/'>RequireJS</a>. That would also give an easier way to automatically scrape dependencies and, eventually, using <a href='http://gruntjs.com/'>grunt</a> (which we have already integrated into the code base), compile and concatenate all our JS at runtime.
+
+**Captured Issue:**<a href='https://code.google.com/p/soc/issues/detail?id=1748'>1748</a>
+
+**Relevant Skills:** Javascript
+
+**Probable Mentor:** Mario Ferraro
+
+# Orientation
+
+Every student is encouraged to clone our <a href='http://code.google.com/p/soc/source/checkout'>git repository</a> and work through our GettingStarted guide. We've created a special <a href='https://code.google.com/p/soc/issues/list?q=label:Bienvenue'>"Bienvenue" label in our issue tracker</a> for issues that we think are particularly good places for new contributors to Melange to make a small, independent change as a first contribution.
+
+We would like our prospective students to propose new project ideas and discuss with Melange developers via [our mailing list melange-soc-dev@googlegroups.com](MailingListsGuidelines.md) (please be mindful that the list is moderated, hence your posts won't show up immediately). When introducing yourself to us, please tell us something interesting that you learned from having built Melange, run its test suite, and played around with it a bit.
+
+**Please don't contact mentors directly in a private email, and keep the list on CC at all times.**
+
+Also, it's always nice to see prospective students showing they're able to do their own research, so make sure you've looked at the recent list archives, to check whether your questions have been already answered, before posting, so we can develop more engaging conversations on the projects of your interest!
\ No newline at end of file
diff --git a/GSoC2014Ideas.wiki b/GSoC2014Ideas.wiki
deleted file mode 100644
index 3d45dfe..0000000
--- a/GSoC2014Ideas.wiki
+++ /dev/null
@@ -1,125 +0,0 @@
-#summary Ideas List for GSoC 2014
-#labels Importance-Useful,Featured
-
-*Melange* is the software that powers Google Summer of Code. If improving the way that Google Summer of Code is run as your Google Summer of Code project sounds attractively recursive, please read on!
-
-= Ideas! =
-
-We welcome your ideas, whatever they might be for Melange - but here are a few of our own for what we think might be good student summer projects:
-
-== Parameterized Layout ==
-
-Isn't it a bummer that the homepage for Google Summer of Code 2014 looks almost exactly the same as the homepage for GSoC 2013? And 2012, and 2011? We'd like to afford programs greater freedom in their graphic presentation on Melange. To do that, we'll need to support multiple program presentations, and support programs choosing one presentation over another. We'll also need to make decisions about how much a program's graphic presentation can be made customizable versus how much must be programmatically fixed.
-
-*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1615">1615</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1616">1616</a>.
-
-*Relevant Skills:* Python, App Engine, HTML, CSS, Javascript, LESS
-
-*Probable Mentor:* Nathaniel Manista, Mario Ferraro
-
-== Responsive Layout  ==
-
-Isn't it a bummer that Melange's pages don't fit on your phone's screen? Modern web sites are written with the entire ecosystem of web-enabled devices in mind and cooperate with the user's device toward the goal of best displaying themselves on the screen available to them. Melange should too.
-
-*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1516">1516</a>.
-
-*Relevant Skills:* HTML, CSS, Javascript, LESS
-
-*Probable Mentor:* Nathaniel Manista, Mario Ferraro
-
-== Javascript Tests == 
-
-Melange has a great deal of Javascript code that needs to be refined and tested.
-We already have a testing architecture in place (using Testem, Jasmine, PhantomJS) but we need to start writing tests.
-
-*Relevant Skills:* Javascript
-
-*Probable Mentor:* Mario Ferraro
-
-== User data dashboard and dependencies ==
-
-The project would be to implement a simple dashboard that would list all artifacts associated with the specified user or profile. It would look somehow like a tree (or a graph, to be more precise). A very simple example is outlined below:
-
-  * userA
-    * profileA
-      * proposalA
-        * commentA
-      * proposalB
-        * commentA
-        * commentB
-        * commentC
-      * projectA
-        * codeSubmissionA
-        * evaluationA
-    * profileB
-      * commentA
-etc.
-
-It would help us understand what the exact layout of our data design is and what exactly has to be processed so that data is not broken after an account is deleted. It looks relatively easy, but it definitely is not. There are at least two open end questions:
-
-  * how to present the data
-  * how to collect the data so that it does not break down when a user has a lot of artifacts, for example comments.
-
-Another part of this project would be to generate a graph of reverse references of models. It would give us visualization of what dependencies between the models are.
-
-*Relevant Skills:* AppEngine, Python
-
-*Probable Mentor:* Daniel Hans
-
-== Resource Hosting ==
-
-Running a program on Melange involves distributing a lot of documents and serving a lot of content - from user images to translated contest rules and everything in between. Melange doesn't yet have a subsystem that makes resource ingestion, hosting, and distribution easy for both users and feature developers. It should.
-
-*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1672">1672</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1874">1874</a>.
-
-*Relevant Skills:* App Engine, Python
-
-*Probable Mentor:* Nathaniel Manista, Daniel Hans
-
-== Student Flow ==
-
-On Melange, signing up as a student and applying for summer projects is harder than it should be. We would love to see a student project focused on making the whole process easier.
-
-*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1530">1530</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1759">1759</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1816">1816</a>.
-
-*Relevant Skills:* Javascript, Python, HTML and CSS
-
-*Probable Mentor:* Nathaniel Manista, Madhusudan C.S., Daniel Hans
-
-== Mentor Flow ==
-
-On Melange, participating as a mentor is harder than it should be. We would love to see a student project focused on making the mentor experience better.
-
-*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=515">515</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1216">1216</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1240">1240</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1306">1306</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1496">1496</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1524">1524</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1525">1525</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1541">1541</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1701">1701</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1788">1788</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1850">1850</a>.
-
-*Relevant Skills:* Python, HTML, Javascript, CSS
-
-*Probable Mentor:* Nathaniel Manista, Daniel Hans, Madhusudan C.S.
-
-== Renovate Our Test Data Seeder ==
-
-Melange uses a test data seeder to generate fake program data for both its test suite and for use during development. Our old test data seeder has proven somewhat hard to work with and has broken several times during recent changes because it itself is not covered by our tests. Our long-term goal is to run several Melange programs inside our test suite, and we would be excited to receive student proposals that would move us toward that objective by affording us an updated, more usable, and more maintainable data seeder.
-
-*Relevant Skills:* Python, App Engine
-
-*Probable Mentor:* Nathaniel Manista, Daniel Hans, Chong Liu (Leo), Madhusudan C.S.
-
-== Port Melange to AMD == 
-
-Currently Melange is using <a href="http://labjs.com/">LABjs</a> to asynchronously load all JS files, using an home-made <a href="https://code.google.com/p/soc/source/browse/app/soc/content/js/melange.dependency.js">dependency system</a>. LABjs, however, is now deprecated. We would like to port our JS loading to use AMD and, specifically, <a href="http://requirejs.org/">RequireJS</a>. That would also give an easier way to automatically scrape dependencies and, eventually, using <a href="http://gruntjs.com/">grunt</a> (which we have already integrated into the code base), compile and concatenate all our JS at runtime.
-
-*Captured Issue: <a href="https://code.google.com/p/soc/issues/detail?id=1748">1748</a>
-
-*Relevant Skills:* Javascript
-
-*Probable Mentor:* Mario Ferraro
-
-= Orientation =
-
-Every student is encouraged to clone our <a href="http://code.google.com/p/soc/source/checkout>git repository</a> and work through our GettingStarted guide. We've created a special <a href="https://code.google.com/p/soc/issues/list?q=label:Bienvenue">"Bienvenue" label in our issue tracker</a> for issues that we think are particularly good places for new contributors to Melange to make a small, independent change as a first contribution.
-
-We would like our prospective students to propose new project ideas and discuss with Melange developers via [MailingListsGuidelines our mailing list melange-soc-dev@googlegroups.com] (please be mindful that the list is moderated, hence your posts won't show up immediately). When introducing yourself to us, please tell us something interesting that you learned from having built Melange, run its test suite, and played around with it a bit.
-
-*Please don't contact mentors directly in a private email, and keep the list on CC at all times.*
-
-Also, it's always nice to see prospective students showing they're able to do their own research, so make sure you've looked at the recent list archives, to check whether your questions have been already answered, before posting, so we can develop more engaging conversations on the projects of your interest!
\ No newline at end of file
