=== modified file 'modules/user/user.module'
--- modules/user/user.module	2010-10-15 03:36:21 +0000
+++ modules/user/user.module	2010-10-20 05:22:06 +0000
@@ -3687,3 +3687,25 @@ function user_file_download_access($fiel
     return user_view_access($entity);
   }
 }
+
+/**
+ * Implements hook_system_info_alter().
+ *
+ * Drupal 7 ships with two methods to add additional fields to users: Profile
+ * module, a legacy module dating back from 2002, and Field API integration
+ * with users. While Field API support for users currently provides less end
+ * user features, the sub-optimal data storage mechanism of Profile module, as
+ * well as its lack of consistency with the rest of the entity / field based
+ * systems in Drupal 7, make this a sub-optimal solution to those who were not
+ * using it in previous releases of Drupal.
+ *
+ * To prevent new Drupal 7 sites from installing Profile module, and
+ * unwittingly ending up with two completely different and incompatible methods
+ * of extending users, remove it from the available modules by setting it to
+ * hidden if the profile_* tables are not already present.
+ */
+function user_system_info_alter(&$info, $file, $type) {
+  if ($type == 'module' && $file->name == 'profile' && !db_table_exists('profile_field')) {
+    $info['hidden'] = TRUE;
+  }
+}

