Index: trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 3398)
+++ trunk/src/org/openstreetmap/josm/gui/io/BasicUploadSettingsPanel.java	(revision 3399)
@@ -35,4 +35,5 @@
 public class BasicUploadSettingsPanel extends JPanel {
     public static final String HISTORY_KEY = "upload.comment.history";
+    public static final String HISTORY_LAST_USED_KEY = "upload.comment.last-used";
 
     /** the history combo box for the upload comment */
@@ -48,5 +49,5 @@
         pnl.add(new JLabel(tr("Provide a brief comment for the changes you are uploading:")), GBC.eol().insets(0, 5, 10, 3));
         hcbUploadComment = new HistoryComboBox();
-        hcbUploadComment.setToolTipText(tr("Enter an upload comment (min. 3 characters)"));
+        hcbUploadComment.setToolTipText(tr("Enter an upload comment"));
         List<String> cmtHistory = new LinkedList<String>(Main.pref.getCollection(HISTORY_KEY, new LinkedList<String>()));
         // we have to reverse the history, because ComboBoxHistory will reverse it again
@@ -117,4 +118,5 @@
         hcbUploadComment.addCurrentItemToHistory();
         Main.pref.putCollection(HISTORY_KEY, hcbUploadComment.getHistory());
+        Main.pref.putInteger(HISTORY_LAST_USED_KEY, (int) (System.currentTimeMillis() / 1000));
     }
 
@@ -124,5 +126,7 @@
     public void startUserInput() {
         List<String> history = hcbUploadComment.getHistory();
-        if (history != null && !history.isEmpty()) {
+        int age = (int) (System.currentTimeMillis()/1000 - Main.pref.getInteger(HISTORY_LAST_USED_KEY, 0));
+        // only pre-select latest entry if used less than 4 hours ago.
+        if (age < 4 * 3600 * 1000 && history != null && !history.isEmpty()) {
             hcbUploadComment.setText(history.get(0));
         }
Index: trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 3398)
+++ trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 3399)
@@ -38,4 +38,5 @@
 import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction;
 import org.openstreetmap.josm.gui.help.HelpUtil;
+import org.openstreetmap.josm.gui.HelpAwareOptionPane.ButtonSpec;
 import org.openstreetmap.josm.io.OsmApi;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -304,5 +305,5 @@
 
     /**
-     * Replies the current value for the upload comment
+     * Returns the current value for the upload comment
      *
      * @return the current value for the upload comment
@@ -313,7 +314,7 @@
 
     /**
-     * Replies true, if the dialog was canceled
-     *
-     * @return true, if the dialog was canceled
+     * Returns true if the dialog was canceled
+     *
+     * @return true if the dialog was canceled
      */
     public boolean isCanceled() {
@@ -324,5 +325,5 @@
      * Sets whether the dialog was canceled
      *
-     * @param canceled true, if the dialog is canceled
+     * @param canceled true if the dialog is canceled
      */
     protected void setCanceled(boolean canceled) {
@@ -358,11 +359,41 @@
         }
 
-        protected void warnIllegalUploadComment() {
-            HelpAwareOptionPane.showOptionDialog(
+        /**
+         * returns true if the user wants to revisit, false if they
+         * want to continue 
+         */
+        protected boolean warnUploadComment() {
+
+            ButtonSpec[] options = new ButtonSpec[] {
+                    new ButtonSpec(
+                            tr("Yes, revise"),
+                            ImageProvider.get("ok"),
+                            tr("Go back to the changeset comment and enter a better description"),
+                            null
+                    ),
+                    new ButtonSpec(
+                            tr("No, continue as is"),
+                            ImageProvider.get("cancel"),
+                            tr("Continue without improving the changeset comment"),
+                            null
+                    )
+            };
+
+            return 0 == HelpAwareOptionPane.showOptionDialog(
                     UploadDialog.this,
-                    tr("Please enter a comment for this upload changeset (min. 3 characters)"),
-                    tr("Illegal upload comment"),
-                    JOptionPane.ERROR_MESSAGE,
-                    ht("/Dialog/UploadDialog#IllegalUploadComment")
+                    "<html>" + 
+                    tr("Your upload comment is empty, or very short.<br /><br />" + 
+                       "This is technically allowed, but please consider that many users who are<br />" +
+                       "watching changes in their area depend on meaningful changeset comments<br />" +
+                       "to understand what is going on!<br /><br />" +
+                       "If you spend a minute now to explain your change, you will make life<br />" +
+                       "easier for many other mappers.") + 
+                    "</html>",
+                    tr("Please revise upload comment"),
+                    JOptionPane.WARNING_MESSAGE,
+                    null,
+                    options,
+                    options[0],
+                    ht("/Dialog/UploadDialog#ReviseUploadComment")
             );
         }
@@ -379,9 +410,11 @@
 
         public void actionPerformed(ActionEvent e) {
-            if (getUploadComment().trim().length() < 3) {
-                warnIllegalUploadComment();
-                tpConfigPanels.setSelectedIndex(0);
-                pnlBasicUploadSettings.initEditingOfUploadComment();
-                return;
+            if (getUploadComment().trim().length() < 10) {
+                if (warnUploadComment())
+                {
+                    tpConfigPanels.setSelectedIndex(0);
+                    pnlBasicUploadSettings.initEditingOfUploadComment();
+                    return;
+                }
             }
             UploadStrategySpecification strategy = getUploadStrategySpecification();
