Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 580 lines (390 sloc) 21.847 kb
ab17bad @szabgab calculate location of modules relative to scripts
authored
1
93d6bcb @szabgab better description on how to setup development environment
authored
2 See the documentation of CPAN::Forum for details on the
3 "INSTALLATION of a development environment"
dd1baed @szabgab move the content of the TODO file to README
authored
4
5 ************ TODO *********************
6
7 * Allow the users to add 6 tags to the postings
8
9 * Create discussion group that does not belong to any specific CPAN package
10 but where posts can be tagged.
11
12 * Allow setting language field of the post - (maybe only for the posts without a package name ??)
13 We can already use utf-8 in the database - allow the use of any language in the GUI as well.
14 once there is someone who will be ready to monitor the posts in those languages.
15 Allow people to subscribe to posts in specific languages only
16
17 ----------------------------------------
18
19 The longest threads
20 select count(*), thread from posts group by thread order by count desc limit 3;
21
22 * add names to forms and test them
23 * add tests where not logged in user tries to post something, gets login page and can go on posting
24 * replace the hidden rm values by URL of the same name /runmode/param/param/param
25
26 * Display date in a better way (ellapsed time, or short date format)
27 Put time ellapsed since post instead of date of post, (3 min. 6 hours 3 days ago)
28 make this configurable: User can say after N days passed the date should show,
29 before that the ellapsed time
30
31 * Add to the daemon that will remove junk keys older than 24 hours or some other
32 configurable value.
33
34 * Record when a user last visited
35
36 ==========================================
37
38 * Write a test checking if the flood_control_time_limit works
39
40 * Check the log file and see why certain distributions are still missing?
41
42 * Check the log of the cpanrating to see missing distributions
43
44 ==========================================
45
46 * Enable users to connect their CPAN::Forum id with their PAUSE id
47
48 Let logged in user type in their PAUSEid (or better yet, on the authors page
49 have a button "This is me" - if this PAUSEid is not yet associated)
50
51 Generate random string and save it in the junk table with the value being
52 { rm => verify_pause_id, pauseid => $pauseid }
53
54 Send an e-mail with code to PAUSEID@cpan.org.
55 Tell the user to check their e-mail and click on the approval link.
56
57 * Allow module authors to setup splash-screen for
58 * for all their modules or
59 * for specific modules
60 The module specific splash-screen will win over any maintainer
61 specific splash screen.
62 On the splash screen people will be able tell the users for example
63 that they discourage the use of CPAN::Forum and can point to other
64 existing ways of getting help for the module.
65
66
67 * Create rss feeds based on tags, allow people to subscribe posts that have
68 specific tags
69
70
71 * Move the session id into the database:
72 sid
73 uid
74 issued
75 last_seen
76
77
78 * Allow a post to be associated with more than one group
79 Sometime we'll want to post a message in more than one group, e.g. now I'd
80 like to know how to use CGI::Session with DBD::SQLite. I might want to post the
81 message on more than one list at the same time as this is related to more than
82 one module. Porbably if I need to chose one I'll select CGI::Session as I am
83 trying to use that but it might be a nice feature. Maybe I need to tell one
84 module as the main group and then have a way to associate a few more modules
85 with the posting.
86
87 Add an extra table for the additional distributions so there will be a leading
88 distro of the thread.
89
90
91 * Test the populate script
92 - create several very partial CPAN mirrors in the testfiles/ directory
93 and process those with the new populate script one after the other
94
95
96 * Write tests for existing system to cover the important aspects of the system
97 1) registration, email verification
98 2) login/logout
99 3) posting a new message
100 4) answering message
101 5) viewing messages
102 6) paging when there are many messages
103 7) not being able to post a message when not logged in
104 8) rss/atom feeds
105 9) mypan
106
107
108 ==========================
109
110
111
112 * Collect the packages from downstream distriutions ORDB::DebianModules
113 See http://szabgab.com/distributions/ for an old project
114
115
116 * Generate HTML files,
117 * generate html (description tag should be the text taken from =NAME secion of each module and that of the main module of the package itself
118 * the documentation of each module will be a static page (maybe later enhanced with javascript)
119 * the main page of the package will be static for now but later it might be a dynamic page (or static with Javascript enhancement?)
120 * put some data in the database (populate
121 * author PAUSEID
122 * package name
123 * module name
124
125 * Process META.yml
126 Start displaying more meta information
127
128
129 * One-time notification of module author when the first post arrives to one of
130 her modules. ( I am not sure we really need this any more )
131
132 * Allow people to mark modules like/not like
133
134 ==========================
135
136 * Setup bug and request tracking (or shall we use RT for this?)
137
138 * Index and display perldoc
139
140 * Index and display perldoc in French and Italian
141
142 * Create a user group that can delete posts, lock (or delete?) users.
143
144 * Session information: remember logged in user,
145 have check-box on the main form to say user wants to be remembered
146
147 * Improve the populate.pl, look at CPANTS for ideas:
148 http://search.cpan.org/src/DOMM/Module-CPANTS-ProcessCPAN-0.62/bin/update_authors.pl
149 Finish the recent.pl file and maybe replace the populate.pl by using recent.pl
150 use this file to retreive list of CPAN authors and their e-mail address
151 http://www.cpan.org/authors/01mailrc.txt.gz
152
153 * check all submitted fields (restrict posting size to 10.000 Kbyte ?
154
155 ==========================
156
157 * Setup stand-alone server
158
159 * Write Selenium tests that run against the web server -
160 by default it should run agains the stand-alone server
161 but should be configurable to run agains the Apache CGI and
162 against the mod_perl version.
163
164
165 * Unite and clean up the code that fetches list of people who need to be
166 notified. Test both the interface to manage this and the the actually
167 retreival of addresses to be notified.
168
169 * We might want to add another way of subscripton: to subscribe to a specific
170 thread even if the user has not posted.
171
172
173 * Provide the alerts in rss feed as well, not only in e-mail.
174 Let people subscribe to alerts but ask to have the RSS feed only, no e-mails.
175 /rss/user/username
176 This should be an integration of all the feeds with the alert mechanism
177
178 * BUG: If the directory of the logging directory is not writable
179 the application fails.
180
181 * Logging: enable logging based on a single client IP address
182
183 * Include number of AnnoCPAN posts
184
185 * Check if it would be possible to get all the data from AnnoCPAN
186
187 * Check if it would be possible to get all the data from CPANRATINGS to
188 include in our display
189
190 * BUG:
191 When I try to reply and the original subject is already 50 chars long
192 in offers a new subject with Re: prefix but then when I try to submit
193 it won't let me.
194 (So far is ok, though it should 70 or 100 long)
195 But the main problem is that if I delete the last word from the
196 subject and press preview again
197 it returns the same error message as it put back the word where it was earlier.
198
199 * At the bottom of the pages add subscribers to specific threads
200 and thread started in separate listsings.
201
202 * Add announcement service (check for new versions of modules and send e-mail
203 to those whom are interested in announcements.
204 For example I just tried to install a module but it failed its test. Checking
205 search.cpan.org I noticed the module has been updated lately and looking at
206 the results of the CPAN Testers I can see I am not the only one with these problems.
207 So for now I skip the installation of this module but I'd like to get an e-mail
208 when a new version of this module is uploaded to CPAN so I can try it while
209 it is hot. I can subscribe to the announcement service of this module and get
210 the message.
211
212 * Announcment service for new modules (modules that appear on CPAN for the first time)
213
214 * Register the PAUSEID where the module was last seen:
215 Send out e-mail about PAUSEID changes
216
217 * Allow people to monitor if someone else uploaded a module in their name space
218 even if that module is not indexed.
219
220 * Check if the technique we use to remember the last request before login
221 cannot cause some security problem such as remembering the last request of
222 someone else who used the same machine recently ?
223
224 * replace the e-mail address checking by if ($q->param('email') !~ $Email::Address::addr_spec) {
225
226 * Enable people to edit their posts
227 - Track changes (versions of the posts)
228 - Shall we display the orinal date and the last update date ?
229 - Shall we display the post on its new date (order the display result by date ?)
230
231 * Improve the markup language
232
233 * Enable module authors (or some other volunteer) to configure some aspects of the
234 section of their own module
235
236 * Get a nice logo and favicon.ico
237
238 * Removed the use of CPAN::Forum::Build - need to see what was it doing and
239 replace its functionality with something better
240
241 * Admin: hide a posting
242
243 * Admin: delete or disable a user
244
245 * Admin: disable posting to a distibution,
246
247 * Admin: hide a distribution and all its postings
248
249 * Admin: change username ?
250
251 * Admin: hide a message (or a whole thread)
252
253 * Admin: freeze a distro: (cannot add new message but still can see the earlier messages)
254
255 * Admin: (or even the author ?) should be able to move a message from one module to
256 another module or group.
257
258 * Statistics on posts, views etc.
259
260 * Enable sending direct mail to a poster (?) (without disclosing e-mail address)
261
262 * Provide statistics on number of comments per distro
263
264 * Replace the /post/number link by /post/TITLE_OF_POST ???
265
266 * make the page size (for paging) user configurable
267
268 * show the release dates and version numbers of the modules
269
270 ==========================
271
272
273 - xml version of the search results
274
275 - Allow users to subscribe for announcement service:
276 A script that will send an announcement on the new version of every module to
277 those who asked for this information.
278
279 - JavaScript that lets users to set all the modules in /mypan to the same value
280 (either All message or thread starter or Followup or nothing)
281
282
283
284 PROBLEM:
285 Currently when a new browser visits the site we immediately give a cookie and
286 instert an entry in the sessions table.
287 After running for about 10 days we have about 32.000 entries in the sessions table.
288 It is not likely that so many people have visited the site.
289 I think the crawlers of Google and co. never return the cookie that I give them and
290 thus every hit they generate will create a new cookie and a new entry in the sessions
291 table. Besides, I never clean up the sessions table.
292
293 So let's see what can we do
294 1) Add an index to that table to speed up the access time (this I should do in any case)
295 2) If I recognize a crawler (e.g. googlebot) don't give a session ID to it.
296 3) Run cleanup routine that will delete old sessions:
297 As right now the session time is only kept within the a_session field this will be a slow
298 process but should be done anyway
299 4) Add a field to the session table where I indicate the last access time
300
301
302 - Decide on Basic Markup language and how to extend for shortcuts opening tag
303 for code: <code[^>]*> but right now only <code> should be accepted closing
304 tag for code: </code>
305
306 - Improve text and explanations.
307
308
309 Authentication and user management process:
310 - new user comes to our site we give him a cookie, when he wants to login we offer him
311 -- login using the auth.perl.org credentials
312 -- login using XYZ credentials
313 -- create local credential
314
315 -- For auth.perl.org
316 --- redirect the user to auth.perl.org wait till he logs in there (maybe even creates the new account)
317 --- sets the preferences
318 --- comes back
319 --- we can fetch some of the information from that user
320 --- we need to keep the user_id received from auth.perl.org for later identification of the user
321 --- while we tell the user we would like to get the username/fullname/e-mail
322 address from auth he might not want to give, for this case we should have our
323 way to update the locally updated username, full name and validated e-mail
324 address.
325
326 -- For local credentials we need the user to give us
327 username/password/fullname and validated e-mail address.
328
329
330 We have to make sure that usernames which are displayed don't collide. Maybe we
331 should use separate fields for usernames from various sources and when
332 displayed we might prefix it auth:gabor, local:gabor etc. Not nice, any better
333 way ?
334
335 - Reply within a thread
336
337 When replying to a post within a thread we might want to open the editor window
338 in the middle of the thread, just below the post I am responding to.
339
340
341 In order to prepare a downloadable version of the database we need to hide the
342 personal infromation:
343 update users set email = 'test_' || id || '@cpanforum.com' where id in(select id from users);
344 update users set password = 'testpw';
345 update users set username = 'test_' || id where id in(select id from users);
346 update users set fname='', lname='';
347
348 delete from sessions;
349
350 delete from configure; -- ???
351 delete user_in_group; -- ???
352
353 update posts set uid=myuid where (select users.uid myuid from users where posts.uid=users.username;
354 select posts.id pid, users.id uid, users.username from posts, users where posts.uid=users.username;
355
356
357
358 Thinking aloud:
359 what if instead of Parse::RecDescend I munge the submitted text to be XML and then
360 run XML parser on it ?
361
362
363 ===============================================================
364 text<b>HTML markup</b>more text<br />and even in a new line
365 <code>
366 Here I can type any while (<XX>) {} code till
367 </code>
368 more text
369 ===============================================================
370
371 Add
372 <post><text>
373
374 replace every <code.*?> with </text><code...><![CDATA[
375 replace every </code> with ]]></code>
376
377
378
379 </post>
380
381
382
383 Now in addition to the </code> endtag you cant use trhe CDATA and the ]]> thingy either
384 within CODE.
385
386 In order to avoid accepting postings today that will break when we add more
387 tags, we will reject any submission that is not correctly marked up.
388
389
390 ======================================================================
391
392
393 We will start to use a partial set of the BBCode but with a few restrictions.
394 In BBCode you can use a small set of markup such as
395 [b]text[/b] to make your text bold
396 [code]Some program[/code] to mark an are to be code.
397 http://forums.gentoo.org/faq.php?mode=bbcode
398
399 Because we don't use the <> marks for our mark up we can safely know that any <>
400 or any other funny character should be taken literally and turned into the
401 appropriate HTML entity, except the [] markup.
402
403 In order to let us further expand our markup language we do not allow the user to
404 add the [ or ] characters to his text. This would of course create problems in Perl code
405 so within [code][/code] pair you can freely use any character (well, except [/code] itself),
406 and we'll show all this characters verbatim.
407
408
409 Allowed tags:
410 [code]CODE[/code]
411 CODE here can contain any character including <>[], the only thing it cannot include is
412 the [/code] substring. No markup is possible inside. CODE will be show in as it is typed.
413 [text]TEXT[/text]
414 Just like CODE , it can contain any character except [/text]
415 It will be shown differently from code section. (Most likely different background color and
416 different font. Otherwise it is still show as you type.
417
418 Free text which is not enclosed in any of the above section can contain some markup using
419 [ characters. If we encounter [ characters in any other situation we don't accept the
420 submission.
421
422 [b]BOLD[/b] to show text bold
423 [url=http://blabla]Title[/url] to create a link
424 [url]http://blabla[/url] to create a link with the link being the title
425 [email=me@you.com]Title[/email]
426 [email]me@you.com[/email]
427
428 http://www.blabla.com magic linking
429 me@you.com magic linking
430
431 [[] to show a [ character
432 []] to show a ] character
433
434
435 At this point we won't allow nesting of markups.
436 Again: any other use of the [ and ] characters will be rejected.
437
438 Additional markup I am thinking of:
439 [c][/c] the same as [code][/code] but usually used inline in Free text.
440
441 [search:Distro-Name] for a link to search.CPAN
442 (< href="http://search.cpan.org/dist/Distro-Name">Distro-Name</a> )
443 [forum:Distro-Name] to link to the relevant forum
444 (<a href="/dist/Module-Name">Module::Name</a>)
445
446 [post:id][/post] to link to another post
447 (<a href="/posts/id">title of that post</a>
448 (one such could also fetch the subject of the appropriate message and insert here)
449
450 [code:a][/code:a]
451 Code with line numbering accross all the snippets with :a in the same post.
452 (a-z) can be used to have several code snippets with their own numbering.
453
454 Now you're probably asking How do I escape all of those pesky special characters?
455 It's easy, you don't. We do it.
456
457 Within the [code][/code] section people should paste in regular code without any
458 changes and our display code should show it correctly.
459 Maybe we can even add a button for each message to "show source" that will try to display
460 the enry from the database as it is really in a <textarea>box</textarea>
461
462 E-mail rewrite: How should text show up in an e-mail message ?
463 Subjects show up as they were written.
464 Text fields remain as they are
465 markup: [b]text[/b] is turned into *text*
466 [url]http://bla[/url] - the URL is left, markup removed.
467 [url=http://bla]Title[/url] - the URL is left, (Title) added in parentheses
468 Same for e-mails
469 [[] - replaced by [
470 []] - replaced by ]
471
472 [code][/code] ?
473 [text][/text] ?
474
475
476 Comments:
477 We could use something like this for markup <cpan:code></cpan:code> and it
478 would be more standart (XML with name space) but would be harder to type.
479
480
481
482 - Create a separate authentication for module authors based on PAUSE id of the users and
483 authentication agains pause.cpan.org - for this I'll have to setup ssl on the server
484
485 Once authenticated the module author can setup special information about the module
486 such as
487 - a link to the main web site of the module, (sourceforge or whatever)
488 - a link to the registration form of the main mailing list,
489
490 - ask to cross-post messages to the mailing list
491 add a "From:" field and e-mail address that will be used to to cross-post
492 add a "To:" address where to send each post.
493 Check-box to send 1) all posts or 2) only thread leading posts.
494
495 Module autoher, if you already have a mailing list and you would like to get
496 the postings that come here to be forwarded to the mailing list too, do the
497 following. (Hmm, I am not really sure this is a good idea because the mailing
498 list people will just answer on the mailing list which (curently) won't go back
499 to the web server. Later, I can include a mail gateway. Hmm.)
500
501
502
503 Q:- A good, clean layout that clearly shows the different topics available
504 for discussion, with easy access to each topic.
505
506 A:- We cannot list the 7000 distros on the front page (that is 270KB data) and would be unusable.
507 We can put a search box to search for module names, I am not sure that's interesting.
508 We can put up a link that will lead to a form where we list somehow all the module names
509 ( a pull down menu ?, real list ?)
510
511 I expect, at least at the beginning most of the people will arrive on links from seach.cpan.org
512 directly to the /dist/Module::Name page where the discussin regardin their module takes place.
513 Maybe I should add some explanation there too ?
514
515
516 * https access for authentication ? Sounds like too tight security for such a simple site
517
518
519 * Add some connections to other modules which depend on the current module or on which this current
520 module depends. See Module::Depends
521
522
882995e @szabgab add some ideas
authored
523 * dependencies
524 For each package guess if it needs C compiler and if it needs dependencies not on CPAN?
525 For each package show its dependency tree and if any of those require C compiler or non-CPAN dependency?
526 http://www.mail-archive.com/module-authors@perl.org/msg05228.html
da89962 @szabgab update README
authored
527
528
529 Design Plans for CPAN::Forum
530
531
532 CPAN::Forum http://cpanforum.com/
533 will be a combination of several other services
534
535 1) A web forum for Perl developers (enhancing its current situation)
536 See also http://perlmonks.org/ as the other forum the Perl community has
537 and http://stackoverflow.com/ that is a real good one
538
539 2) CPAN Search engine replacing http://search.cpan.org/
540 and http://kobesearch.cpan.org/
541
542 3) http://perldoc.perl.org/
543
544 4) With user contributed examples as on http://php.net
545 (e.g. http://www.php.net/manual/en/language.functions.php )
546
547 5) Including information from various other sources such as
548 http://deps.cpantesters.org/
549 http://deps.cpantesters.org/?module=CPAN::Forum
550
551 http://rt.cpan.org/
552 http://rt.cpan.org/Public/Dist/Display.html?Name=CPAN-Forum
553
554 http://www.cpantesters.org/
555 http://www.cpantesters.org/show/CPAN-Forum.html#CPAN-Forum-0.11
556
557 http://cpanratings.perl.org/
558 http://cpanratings.perl.org/d/CPAN-Forum
559
560 http://www.annocpan.org/
561 http://www.annocpan.org/~SZABGAB/CPAN-Forum-0.11/lib/CPAN/Forum.pm
562
563 http://cpants.perl.org/
564 http://cpants.perl.org/dist/overview/CPAN-Forum
565
566
757c18e @szabgab update version number to 0.21
authored
567 RELEASE process
568 ====================
569 Make sure the local git repository is up to date
570 Update the version number in every .pm file!
571
572 perl Build.PL
573 perl Build
574 perl Build test
575 perl Build manifest ????
576 perl Build dist
577 git tag -a v0.19 -m' version 0.19'
578 git push --tags
579
Something went wrong with that request. Please try again.