Draft for the new Places | Groups-locale application
Goal: To provide a system that offers group functionalities to geographic places where we have members (cities, regions, countries). Intuitive browsing based on the hierarchy of geographic places should be offered.
Navigation
List of all countries sorted by continents
Continent Page
-- dropdown list of all cities in this continent
-- list of 15 major cities (by nb of members) in this continent
-- list of all child countries (paginated)
Country Page
-- dropdown list of all child regions in this country
-- list of 15 major cities (by nb of members) in this country
-- list of all child regions (paginated)
<< backlink to continent
Region Page
-- dropdown list of all child regions in this region
-- list of 15 major cities (by nb of members) in this region
<< backlink to country
<< backlink to continent
Region Page
-- dropdown list of all cities in this region
-- list of 15 major cities (by nb of members) in this region << backlink to parent region
<< backlink to country
<< backlink to continent
City Page
-- link to nearby cities
<< backlink to parent region
<< backlink to parent region
<< backlink to country
<< backlink to continent
Source of geographic / hierarchy information
We get the geographical info from GeoNames: http://www.geonames.org/
Feature codes used by GeoNames: http://www.geonames.org/export/codes.html
entities used to retrieve information
In the framework, there are some data entities that can be used for easy data retrieval.
- Geo: main geo entity, coupled with the geonames_cache table. Notable functions:
- getParent()
- getAncestorline()
- getCountry()
- getChildren()
- getHierarchyChildren()
- getHierarchyParents()
- getAlternateName()
- getName()
- isChildOf
- GeoAlternateName: coupled with geonames_alternate_names. Notable functions:
- getNameForLocation()
- GeoHierarchy: coupled with geo_hierarchy, provides access to the location hierarchy. Notable functions:
- getAllParents()
- getAllChildren()
There are other geo entities, look in /build/geo/ for more information. Most of them are coupled with Geo - so in general, use Geo to get what you need.
tools / group features available
design drafts
http://www.bewelcome.org/gallery/show/image/2457
TODO
- Continent-Support
We don't plan with a support for parentIds for the countries yet (continents). As places show continents too, it would be nice to be able to point to them (even if only as a link to /places). What's the way to go? Go on using the geonames_countries table? Then we should integrate that in the geo-entities.
If I'm not mistaken, continents are represented in geonames_cache - and in geo_hierarchy (according to Philipp). So, the Geo entity should have some methods added, like getCountry and getContinent that return the country and continent of the location, respectively. Both should take their data from geo_hierarchies, not geo_countries. Peter
- Advanced routing
Currently it's not possible to surf pages like "/places/DE/Land Berlin/forum" or "/places/FR/members". How do we make this possible?
'/places/forum/location' will work now, same for '/places/members/location' and '/places/wiki/location'. Peter
- Extending Page Classes
Will we GeoGroupForumPage extend GroupForumPage or GeoGroupStartPage? We need stuff from both pages for GeoGroupForumPage...
Consider an abstract base class for the geo pages, if all of them share functionality. Peter
- Creating Routines for Joining/Leaving? a GeoGroup? (Signup,Location change, Manual join)
How and when will members join a GeoGroup/Place?? Under which circumstances will members be able to leave a group?
For now I propose the following routines: Micha
- Upon signup: member joins all geo groups in the hierarchy of the choosen location
- Upon manual location change (/setlocation): joins geo groups in hierarchy of the new location
- Upon manual request to join a geogroup (/places/join/location): member joins the requested geo group
- Upon manual setting (/groups/mygroups): member leaves any choosen group, except for the ones in the hierarchy of his current location
Testing
Current core functionality of the geogroups can be tested here: http://muks.org/dev/rox-geo/htdocs/places/
For the geogroups admin functions: http://muks.org/dev/rox-geo/htdocs/admin/groups
I'll try to update the installation as often as possible - Micha
Discussion
Can you give an example why users should request to join a geogroup/place? Matthias
Sure: Let's say a member living in New York, USA, wants to visit some places in Europe next summer. He might want to join some local groups like "Europe", "Berlin", "Paris", "France" etc. to know about things going on a local level before his actual visit. While I would still let everyone (also non-members) post messages in local groups, you'll only get notifications about group activity once you sign up (which makes sense!). We would come closer to the way CS handles groups, I guess. Does that convince you? Micha
Ok. That would mean we would have two kinds of group members?
- 1. Residents, the people who live in that place and
- 2. Visitors, mostly temporary members of a group, who are only interested what's going on in a certain place.
If we can visually separate those two, i am totally fine with it. Matthias
Now that I think about it, maybe it's too complicated that way. Also it makes it hard to introduce the new local groups without yet more major changes. I change my current proposal: Users should only belong to one hierarchy of geo locations (Europe > Germany > Berlin > Berlin) and shouldn't be able to change it until they change their current address/location. Users should additionally have the option to "watch" any group (local and other) that's public without joining it. This feature can be introduced seperately later. Micha
My proposal would be to leave and join the geogroups as easy as a normal group. Only difference would be that you will be automatic added to your address location. And if you move Berlin->Paris you stay in the Berlin geogroup (you can leave manually) and you will be automatic added to Paris (you can leave manually) No functional differences for "watchers", "Visitors" or "Residents" , please. Manuel
Although, I sympathize with this proposal, I think it would lead to certain problems. "Places" is and will be the place to search for hosts on your travel.
- If we would list members in a geogroup that don't actually live at the corresponding location but rather have an interest for it, then people looking for hosts will be more than confused.
- If a member can always leave a geogroup (even if he still lives in that place), people looking for a host couldn't find him anymore. However, to avoid that, we could list not the members in the group but actually the ones that have the location set as their address. Then again: Why do we integrate groups and places at all, if not to integrate their functionality?
- Note, that as a group member you always have the option to receive messages from the group or not. So, why should we give our users the possibility to leave their local geogroup at all? What could be a good reason for them to want that? Micha


