As the software has evolved, we may not want to support a special home page as described below (i.e. go to a page of content in the database, and mark that page as the home page—this is not possible because a page is always reference by its Object ID and thus it cannot be in two places at the same time.) That being said, we can of course have a filter such as [node:<some name>] which shows another page as the home page or an easy way to go to a page and swap it with the home page.
The Home Page is created by assigning the empty path to the page. If another page is already the home page, then we can either assign a default path to it or ask the user to correct the dilema (i.e. both pages, the old and current home page need to be changed.)
We could also give a page two paths whenever it is marked as the home page. However, since there should be only one home page we anyway need to fix the current home page to make another the current home page.
One special effect on a page when it is marked as the home page, it cannot be deleted. This way we prevent losing the page inadvertendly.
When creating a new website we want to create a default home page.
This could be a dynamic home page which display some help explaining what to do next with your website. We could also just create a home page which the user can edit at will and that's the home page (it could still include the help that you'd certainly end up deleting on first edit.)
Drupal shows a default home page with a small about of help on how to setup your website. Then, once you posted at least one story, a List of your latest posts.
However, I think it is better to ask the user what he's trying to achieve with his site than creating a default that's likely 50% of the time wrong.
More and more, home pages are done with a few large images that can be slid left or right with some text describing the product or service.
We can do that with a very simple jQuery library named superslides available on github.
Others make use of another jQuery library, OnePageScroll, also available on github. In this case a page down will scroll exactly one page as we define it (i.e. maybe a <section> tag), which could represent one page from the website marked to appear on the front page.
Each entry that gets slid should probably be coming from a separate page to make it easier to edit the data. Either that or make use of a list although our editor may not like to have to manage 10 images of a few thousand x a few thousand pixels in size.
A page can be written in multiple languages so there is nothing special to do about the page to get the correct language, we just get the correct language from the database to display the page in this case.
All the languages are accessible using language specific paths, sub-domains, or query string.