Jump to content

W3S Forum Project: Discussion


Chocolate570

Recommended Posts

When this project is done, we could have plans for a sequel, couldn't we? So what about Creating a very, full, complicated, open source, whatever application, step by step? One part of the application per project, like first a loginsystem, then a questbook, etc. And all for beginner developers, that they can download the application or use it online, to set up their site when this is completed :)I can see it all before me :) "The great hmhmhm application of the developers at W3Schools" :)
we could design the admin pannel with the idea that we could continusly add things to it just like add another sort of tab. here is another idea. we make an online drawing sort of thing with php or another language that can create images. then the user could download their own image. mabey have it so they could make custom smilies or something like that too. i saw one cool image that was like a sign in the ground that said your ip address is ****** and your isp is ***** you are using browser name on operating system(replace *** with real thing). it would be cool to allow short bits of php code to display information in the images.
Link to post
Share on other sites
  • Replies 286
  • Created
  • Last Reply
Justsomeguy, here is the schema for my template engine db http://www40.brinkster.com/aspnetguy2/create_schema.txt
Ahh I got it, you're talking about more of a complete content management system then just a template engine. My template engine is a single include file, no database needed. It doesn't store any data. You include the file which contains the class definition, create your template file, then put all the data you want on the page into the class, and the class will take the template file, substitute whatever data you have, and display the result. It supports including templates from other templates (file include), if statements (show a certain block of HTML if a condition is true), basic string replacement, the dataset like I was talking about where you can send it an array and it will loop through it and display a designated piece of HTML for each item in the array, automatic form field generation which supports automatically filling in the values after submission (like ASP.NET's viewstate), etc. Each page has a template file containing all the HTML and template tags, and the point is to completely separate the programming and logic from the display. Theoretically, a designer could work on the templates themselves and set up how everything looks visually, and the programmer could work simultaneously on the backend programming and just insert the data where it needs to go on the template.So that's what I thought when you said template engine, but I think you're talking more about a content management system, which is typically a database-driven backend to make changes to all of the pages without needing to edit the code itself. That would also be a good project, it's not prohibitively big. Or like Dan was talking about, we could create an application framework. It could include everything necessary for handling user authentication, cookies, sessions, logging, all of the basic things that pretty much every web application needs.
Link to post
Share on other sites

Yes, like that. The most important thing of such application will be the separation between the actual action code that should be executed after something needs to be edited, and the actual view of the site and pages. that is what my site now has, fully managed php code, view separated from actions. It is a great managable program, when something needs to be edited, everything can be found on its special location in the source code.File management is also an important thing. Even when the system is expanding, the filesystem should not need to be modified, only parts added into the files, and so on. This is the case when all actions, all functions, pageparts and data is sorted and not thrown throughout the source. The plan for the perfect application, it would be very nice :)

Link to post
Share on other sites
it is to suggest ideas for a web app (in PHP,ASP, or .Net, or whatever you guys decide).Justsomeguy, here is the schema for my template engine db http://www40.brinkster.com/aspnetguy2/create_schema.txtAs you can see it will handle multiple websites, each page imports a template (text file with html template code), will have GUI to change text, images, and menus
I would recommend this sort of data schematic - your queries will be easier to construct and require much less aliasing:http://www.iribbit.net/i/_files/w3s_projectA.txtThis will allow you to write statements like this:
SELECT	*FROM w3s_Image (nolock)		JOIN w3s_Page (nolock) ON img_pag_PageID=pag_PageID

vs. this:

SELECT	*FROM Image I (nolock)		JOIN Page P (nolock) ON p.PageID=i.PageID

Personally, I can't stand having the same column name used multiple times. Using a prefix convention like I suggest helps also identify which PageID (or any field for that matter) is being used from each table - easily identifying foreign keys. It also ensures that every fieldname is unique - but that's my $0.02.As for the overall project - it really sounds like you guys are talking about a Content Management System (CMS) - especially after reviewing the database schematic. I built one years ago and they are plenty of things to consider.edit: lol - just read through justsomeguy's post saying the same thing (regarding CMS) - I need to type faster.Good Luck.P.S. On the data schematic, I'd also add xxx_date_added, xxx_date_modified, and xxx_delete_flag. Filling in todays date as a default and then obvously and date subsequently for the date_modified. The delete_flag for every table is a standard too - soft deletes are very helpful these days even though they involve a little more query work - orphan records are easier to find/handle.(looks like I'm up to my $0.05 worth on input)

Link to post
Share on other sites

@ Skemcin: I don't understand much of what you're saying :) I know about many things (ie (x)html, css, javascript, php, sql, dhtml), but I am not advanced in any of those (exept for Xhtml). Shall we firstly "design" the plans of our application before we go deep into things? :)

Link to post
Share on other sites

I have to agree that building a CMS is a really tough work. It can never be done in 3 weeks without major security flaws or a lack of a variety of frequently used features, unless of course you actually use the code from an existing CMS.Aim for something smaller... please. As Dan pointed out, that way more inexperienced developers may also contribute, though of course their contribution won't be that big. I would also add that a simpler application will impove the speed/quality ratio scince there will be less things to confuse us all.

Link to post
Share on other sites
I have to agree that building a CMS is a really tough work. It can never be done in 3 weeks without major security flaws or a lack of a variety of frequently used features, unless of course you actually use the code from an existing CMS.Aim for something smaller... please. As Dan pointed out, that way more inexperienced developers may also contribute, though of course their contribution won't be that big. I would also add that a simpler application will impove the speed/quality ratio scince there will be less things to confuse us all.
True by any means, though if we split the entire to be application into (much) smaller things, we could consider going a bit more complicated. The simple ones between us could still take part of the less advanced parts of those smaller pieces that would together become this application :)
Link to post
Share on other sites
Shall we firstly "design" the plans of our application before we go deep into things?
You have to!The first step is deciding what to actually build (e.g. "a forum"). Step 2 is creating the design document, which will define all details of the application. This is a necessity for any large project to be well-managed!The last step is to create the application to conform to the design document. This way the customer knows what they are getting before you even start, and you know what you are building before you start designing it. After the design document is finished you can start designing it, meaning the database schema, conventions you want to follow, etc.
Link to post
Share on other sites

How about an XForms generator? A person will enter a code in a form as to what form (s)he wants, what type of validation for each field, etc. and the generator is going to return XHTML 1.1 code + the desired XForm.I already feel it will be complicated, eventhough as you can see, it can be summarized in one sentence :) .

Link to post
Share on other sites

I think one of the requirements needs to be user accounts and user authentication. It will give people a good example of how it works, since pretty much everything dynamic uses it. If people want the project to be small, then maybe a simple guestbook that requires users to create an account.Also, scroll down the list of posts in here and look at the post times. This topic might DDOS the server!

Link to post
Share on other sites
@ Skemcin: I don't understand much of what you're saying :) I know about many things (ie (x)html, css, javascript, php, sql, dhtml), but I am not advanced in any of those (exept for Xhtml). Shall we firstly "design" the plans of our application before we go deep into things? :)
I'm not introducing anything new in what I posted. I expanded on some details specific to the database schematic that was proposed. The application plan is definitely the first things to settle on. But as you will find many open source project will tend to appear more like organized scatter brained thoughts. But in actually, it is a few folks multi-tasking. Be able to quickly look into the future (the database schematic) can often provide insight and detail on the present "planing" stage. This practice often reduces the inevitable "we should have thought of that" once you get to development.As for the project, it is still possible to consider developing a CMS system. There is no reason why it can;t be done. A good plan that is set in phases could easily accommodate all the real world requirements and functionality. All this could defitely no be done in 3 weeks - except maybe a Phase I. And, yes, there has to be a deadline - other wise you be stuck with Netscape 5.x - if you know what I mean.
Link to post
Share on other sites
I think one of the requirements needs to be user accounts and user authentication. It will give people a good example of how it works, since pretty much everything dynamic uses it. If people want the project to be small, then maybe a simple guestbook that requires users to create an account.Also, scroll down the list of posts in here and look at the post times. This topic might DDOS the server!
I guess so, but then again, there are many existing projects from which people can learn and they haven't. This project won't be much different, because it will still requre people to dig into the code.That's why I'm trying to suggest something that hasn't been done before. It makes it more exciting :) .
Link to post
Share on other sites

Pretty much everything has been done. We might as well do something that is useful to a lot of people. Maybe a photo gallery with comments.We need a list of suggestions. How about we create a suggestion listing application to help us design this.SFB thought that was funny.

Link to post
Share on other sites

Besides of planning what we are going to do, we should also think of the possibilities we have.. Else we come up with a great plan to be, but without the possibility to create it due to lack of something :)ie, would the members of the project have access to a central server that is set up specially for the project only? So they don't need to have a webhost for/of their own to test the code they write? And next to that, how are we going to deal with all the files, when everyone is busy on something, how can we know that not more than one people is working on the same file and so on?I mean, are there sollutions to be found for these issues? If so, go back to designing the plans :)

Link to post
Share on other sites

A server is not a big issue. There are quite a few people who can host something like this and provide FTP access, and it's not even out of the question to buy a new hosting account and domain specifically for this.We could use a versioning system (CVS) or shared source repository to make sure that multiple changes to files get handled appropriately.

Link to post
Share on other sites

What does a CVS do? How can anything prevent one from deleting a piece of code and another from editing the very same piece of code in the same document? :) Don't know much about that.But in case not everyone would be able to possess an own host, it would not be a problem right?Lets get back to the plans then, I only mentioned it, don't know if it was necessary :) Just in case.

Link to post
Share on other sites

What he means (I think) is for you to specify a version number and a changelog for it in a text file. Every contributor will do that so that the editor in the end could combine all the stuff properly.So for example we will end up with an FTP server where you can only write, but not append files and everyone will add files like:

project-v0.000002-boen_robot.zipproject-v0.000002-boen_robot.log
where the log file has for example
File index.html - line 25 - Changed <b> to <strong>File index.html - line 32 - Changed </b> to </strong>File index.html - line 8 to 20 - Renamed every occurance of class "left" to "navigation"Directory CSS - Renamed to _CSSFile index.html - line 5 - Changed @import url('CSS/main.CSS') to @import url('_CSS/main.CSS')File _CSS/main.css - Renamed every occurance of class "left" to "navigation"
The end contains the contributor because two might end up with editing a single version, thus incrementing it once. If you edit a previously supplied verision, you would increase it's number by 1.If two versions with the same number from different contributors arrive, it should be the editor's duty to combine those two versions properly and announce an "official" version for others to develop on. If some changes overlap, the editor should decide which implementation is better (I'm starting to sound like someone from W3C here) and implement it in the final file.And before you ask. Yes, of course. The editor should be the admin of the FTP server.
Link to post
Share on other sites

That would be one way to do it, for one person to collect and merge all of the changes.This is an example of a CVS system:http://www.nongnu.org/cvs/Among other things, it allows people to check out and check in files to manage who is working on what. I haven't had to actually use one of these, because I've pretty much been the only developer, but I know that one of the main things people use them for is the ability to check out the files you are working on, so at least people know what other people are working on.

Link to post
Share on other sites
That would be one way to do it, for one person to collect and merge all of the changes.This is an example of a CVS system:http://www.nongnu.org/cvs/Among other things, it allows people to check out and check in files to manage who is working on what. I haven't had to actually use one of these, because I've pretty much been the only developer, but I know that one of the main things people use them for is the ability to check out the files you are working on, so at least people know what other people are working on.
Sounds good but how are CVS files generated? I wouldn't like to learn a whole new language just to make a small change in some of the files.And how is the editor going to use the CVS files to release a working application, using all of the contributions?
Link to post
Share on other sites

Oh now I understand what it does. Yes of cource, I've heard about something like that on networks, my dad used it too with his AutoCAD on the network. Checkin in, checkin out :) Would be the most logical I guess :)

Link to post
Share on other sites
Sounds good but how are CVS files generated? I wouldn't like to learn a whole new language just to make a small change in some of the files.And how is the editor going to use the CVS files to release a working application, using all of the contributions?
I don't know, like I said I haven't used one. I'm sure it's all in the documentation. I'm not sure if any syntax is required, or if the CVS just looks for changes in the file. But I'm sure it's all in the documentation. These things are typically made to help make development easier, so I doubt it requires a lot of complexity.
Link to post
Share on other sites

Within a couple of hours we have 3 pages of posts? :)Again, I note that the reason there's a 3 week time limit is so that everyone can see that an idea that would take more time than that is out of our reach. That's why, for now, I suggest something simple. Think about that :)

Link to post
Share on other sites

That's understandable, but something simple doesn't require multiple 10-man teams to complete. It would probably take around 5 people 3 weeks to make something like a simple guestbook or photo gallery, for example, working leisurely. 3 teams of 10 people working part-time for 3 weeks is around 1800 man-hours, that's a huge project!

Link to post
Share on other sites

It might be a good idea to have one small application with only one team working on it to start with. It would help generate popularity for the project, would attract more interested people for a second project, and would get the basics out of the way. Then the second project could be a large, complex application.Or, we could do something like a community site. One team could work on the user management/authentication system, one team could work on a guestbook, and one team could work on a photo gallery. The end result would be a system where people could create user accounts, set up their own guestbook, and set up their own photo gallery. That's probably pretty reasonable.

Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.

×
×
  • Create New...