There are tons of tags out there which have a synonym of the tag itself, just with a dash added into it. Originally this was done to connect those tags so that two different tags for the exact same thing didn't exist. But now we have rules stopping two tags from being created that only differ by a dash (or hyphen), so all these synonyms are useless.
Why? Searching for foobar
and foo-bar
yield the exact same results in the tag search. Whether or not the hyphen is there makes no difference, so the synonym doesn't actually serve any purpose anymore. It also clutters up the tags pages with extra tags that just redirect to another tag. With so little purpose, is it not safe to just ditch these crap synonyms? As well, any synonyms like this which have questions on both versions should be merged.
Synonyms which only differ by a dash (including still-pending ones):
- .net-2.0 ← .net2.0
- .net-3.5 ← .net3.5
- .net-4.0 ← .net4.0
- .net-remoting ← .netremoting
- .net-services ← .netservices
- 16bit ← 16-bit
- 32bit ← 32-bit
- 3d-secure ← 3dsecure
- 3rd-party ← 3rdparty
- 64bit ← 64-bit
- ab-testing ← abtesting
- access-denied ← accessdenied
- access-point ← accesspoint
- action-filter ← actionfilter
Note: Also eliminate actionfilters since action-filters covers it. - actionmailer ← action-mailer
- actionmethod ← action-method
- activerecord ← active-record
- add-in ← addin
Note: Also eliminate addins since add-ins covers it. - add-on ← addon
- addressbook ← address-book
- ajaxpro ← ajax-pro
- amazon-cloudfront ← amazon-cloud-front
- anti-patterns ← antipatterns
- app-config ← appconfig
- app-store ← appstore
- asp.net-mvc ← asp.netmvc
- asp.net-mvc-2 ← asp.net-mvc2
- asp.net-mvc-3 ← asp.net-mvc3
- a-star ← astar
- attached-properties ← attachedproperties
- autocomplete ← auto-complete
- auto-generate ← autogenerate
- auto-properties ← autoproperties
- autosuggest ← auto-suggest
- back-button ← backbutton
- background-color ← backgroundcolor
- bar-chart ← barchart
Note: Also eliminate bargraph since bar-graph covers it. - base-address ← baseaddress
- base-class ← baseclass
- batch-processing ← batchprocessing
- berkeley-db ← berkeleydb
- berkeley-db-je ← berkeleydbje
- berkeley-db-je ← berkeleydb-je
- beta-testing ← betatesting
- binary-data ← binarydata
- bit-fields ← bitfields
Note: Also eliminate bitfield since bit-field covers it. - b-tree ← btree
- bug-tracking ← bugtracking
- bytearray ← byte-array
- bytecode ← byte-code
- c++builder-5 ← c++-builder-5
- c++-cli ← c++cli
- cache-dependency ← cachedependency
- casting (eliminate typecasting since type-casting covers it)
- changelog ← change-log
- char-array ← chararray
- classloader (eliminate classloading since class-loading covers it)
- class-method ← classmethod
- client-profile ← clientprofile
- client-server ← clientserver
- cluster-analysis (eliminate dataclustering since data-clustering covers it)
- code-first ← codefirst
- code-smell ← codesmell
- code-snippets ← codesnippets
- color-space ← colorspace
- command-line ← commandline
- common-table-expression ← commontableexpression
- connection-string ← connectionstring
- core-animation ← coreanimation
- core-audio ← coreaudio
- code-data ← coredata
- core-foundation ← corefoundation
- core-graphics ← coregraphics
- core-location ← corelocation
- core-plot ← coreplot
- core-text ← coretext
- credit-card (eliminate creditcards since credit-cards covers it)
- cross-platform ← crossplatform
- crystal-reports (eliminate crystalreport since crystal-report covers it)
- custom-action ← customaction
- custom-component ← customcomponent
- custom-controls ← customcontrols
Note: Also eliminate customcontrol since custom-control covers it. - custom-errors ← customerrors
- custom-model-binder ← custom-modelbinder
- data.frame (eliminate dataframe since data-frame covers it)
- data-access-layer ← dataaccesslayer
- data-binding ← databinding
- datagrid ← data-grid
- data-mining ← datamining
- datasource ← data-source
- data-structures ← datastructures
Note: Also eliminate datastructure since data-structure covers it. - data-synchronization ← datasynchronization
- datatypes ← data-types
Note: Also eliminate data-type since datatype covers it. - data-warehouse ← datawarehouse
Note: Also eliminate datawarehousing since data-warehousing covers it. - datetime ← date-time
- dbix-class ← dbixclass
- diffie-hellman ← diffiehellman
- distributed-transactions ← distributedtransactions
- domain-name ← domainname
- dot-emacs ← dotemacs
- dotnetnuke-5 ← dotnetnuke5
- double-click ← doubleclick
- double-quotes ← doublequotes
- drag-and-drop ← draganddrop
Note: Also eliminate dragdrop since drag-drop covers it. - drop-down-menu ← dropdown-menu
Note: Also eliminate dropdown since drop-down covers it. - drupal-7 ← drupal7
- dynamic-binding ← dynamicbinding
- dynamic-linq ← dynamiclinq
- early-binding ← earlybinding
- ebook ← e-book
- e-commerce ← ecommerce
- ejb-3.0 ← ejb3.0
- ejb-3.1 ← ejb3.1
Note: Also eliminate ejb31 and ejb-31; 3.1 != 31 - elasticsearh ← elastic-search
- electric-commander ← electriccommander
- emacs23 ← emacs-23
- email ← e-mail
- ember-data ← emberdata
- entity-framework-4 ← entity-framework4
- error-code ← errorcode
- event-handling ← eventhandling
Note: Also eliminate eventhandler since event-handler covers it. - event-log ← eventlog
- exchange2007 ← exchange-2007
- exchange2010 ← exchange-2010
- expressionengine ← expression-engine
- ext-gwt ← extgwt
- facebook-connect ← facebookconnect
Note: Also eliminate improperly spelled facebook-connnect. - file-descriptor ← filedescriptor
- file-download ← filedownload
- file-io ← fileio
- filenames ← file-names
- file-permissions ← filepermissions
- file-type ← filetype
- file-upload ← fileupload
- firefox-3 ← firefox3
- flash-cs5 ← flashcs5
- flash-media-server ← flashmediaserver
- flash-player ← flashplayer
- flex4 ← flex-4
Note: flex-4 is also the master of adobe-flex-4. - fluent-nhibernate ← fluentnhibernate
- foreach ← for-each
- foreign-keys (eliminate foreignkey since foreign-key covers it)
- for-loop ← forloop
- for-xml ← forxml
- frame-rate ← framerate
- fullscreen ← full-screen
- full-text-search ← fulltext-search
Note: Also eliminate fulltext since full-text covers it. - full-trust ← fulltrust
- git-extensions ← gitextensions
- glassfish-3 ← glassfish3
Note: Also eliminate glassfishv3 since glassfish-v3 covers it. - gnu-make ← gnumake
- google-api ← googleapi
- google-code ← googlecode
- google-docs ← googledocs
- google-earth ← google-earth
- google-maps ← googlemaps
- group-by ← groupby
- gwt (eliminate googlewebtoolkit since google-web-toolkit covers it)
- gwt-ext ← gwtext
- harddrive ← hard-drive
- hashmap ← hash-map
- has-one ← hasone
- header-files (eliminate headerfile since header-file covers it)
- hittest ← hit-test
- howto ← how-to
- html5 ← html-5
- html-agility-pack ← htmlagilitypack
- html-editor ← htmleditor
- html-helper ← htmlhelper
Note: Also eliminate htmlhelpers since html-helpers covers it. - http-1.1 ← http1.1
- http-compression ← httpcompression
- httpconnection ← http-connection
- httpcontext ← http-context
- http-get ← httpget
- iis7 ← iis-7
- iis-7.5 ← iis7.5
- imagebutton ← image-button
- imagemap ← image-map
- internet-explorer-6 ← internet-explorer6
Note: Also eliminate ie6 since ie-6 covers it. - internet-explorer-7 ← internet-explorer7
Note: Also eliminate ie7 since ie-7 covers it. - internet-explorer-8 ← internet-explorer8
Note: Also eliminate ie8 since ie-8 covers it. - internet-explorer-9 ← internet-explorer9
- iolanguage ← io-language
- ios4 ← ios-4
- ios-4.2 ← ios4.2
- ipad-2 ← ipad2
- ip-address ← ipaddress
- iphone (eliminate iphonesdk since iphone-sdk covers it)
- iphone-4 ← iphone4
- iphone-sdk-3 ← iphone-sdk3
- ipod-touch ← ipodtouch
- iso8601 ← iso-8601
- jasper-reports ← jasperreports
- java (eliminate javase since java-se covers it)
- java-1.3 ← java1.3
- java-1.4 ← java14 (14 != 1.4)
- java-2d ← java2d
- java-3d ← java3d
- java-5 ← java5
Note: Also eliminate java5.0 since java-5.0 covers it. - java-6 ← java6
Note: Also eliminate java6.0 since java-6.0 covers it. - java-7 ← java7
Note: Also eliminate java7.0 since java-7.0 covers it. - javadb ← java-db
- java-ee ← javaee
- java-ee-5 ← javaee5
- java-ee-5 ← javaee-5
- java-ee-5 ← java-ee5
- java-ee-6 ← javaee6
- java-ee-6 ← javaee-6
- java-ee-6 ← java-ee6
- java-io ← javaio
- java-me ← javame
- javascript ← java-script
- java-web-start ← javawebstart
- jax-rs ← jaxrs
- jax-ws ← jaxws
- jpa-2.0 ← jpa2.0
Note: Also eliminate jpa2 since jpa-2 covers it. - jquery-1.4 ← jquery1.4
- jquery-1.5 ← jquery1.5
- jquery-grid ← jquerygrid
- jquery-tools ← jquerytools
- jquery-ui ← jqueryui
- jsf-2.0 ← jsf2.0
Note: Also eliminate jsf2 since jsf-2 covers it. - jsp-fragments ← jspfragments
Note: Also eliminate jspfragment since jsp-fragment covers it. - jsp-tags (eliminate jsptagfiles since jsp-tag-files covers it)
- kendo-ui ← kendoui
- key-bindings ← keybindings
Note: Also eliminate keybinding since key-binding covers it. - key-value ← keyvalue
- layout-manager ← layoutmanager
- line-break ← linebreak
- line-breaks ← linebreaks
- linkbutton ← link-button
- linked-list ← linkedlist
- linq-to-sql ← linqtosql
- llvmclang ← llvm-clang
- load-balancing ← loadbalancing
- local-lib ← locallib
- local-storage ← localstorage
- lowercase ← lower-case
- mac-address ← macaddress
- many-to-many ← manytomany
- maven-2 ← maven2
- mediaplayer ← media-player
- media-queries ← mediaqueries
- memory-leaks (eliminate memoryleak since memory-leak covers it)
- message-passing ← messagepassing
- message-queue ← messagequeue
- metaprogramming ← meta-programming
- method-call ← methodcall
- method-overloading ← methodoverloading
- micro-isv ← microisv
- mime-message ← mimemessage
- mime-types ← mimetypes
Note: Also eliminate mimetype since mime-type covers it. - mobile-web ← mobileweb
- modalviewcontroller ← modal-view-controller
- mpeg-4 ← mpeg4
- ms-access ← msaccess
- ms-word ← msword
- multibyte ← multi-byte
- multi-select ← multiselect
- multi-site ← multisite
- multithreading ← multi-threading
- mysql ← my-sql
- nested-sets ← nestedsets
- netbeans-6.9 ← neatbeans6.9
- nine-patch ← ninepatch
- node.js (eliminate nodejs since node-js covers it)
- no-framework ← noframework
- nonblocking ← non-blocking
- objective-c (eliminate objc since obj-c covers it)
- one-to-one ← onetoone
- opengl-es ← opengles
- opensearch ← oopen-search
- oracleforms ← oracle-forms
- oracle-xe ← oraclexe
- order-by ← orderby
- orient-db ← orientdb
- osx (eliminate macosx since mac-os-x covers it)
- passive-sts ← passivests
- path-finding ← pathfinding
- perl-critic ← perlcritic
- perl-tidy ← perltidy
- phone-number (eliminate phonenumbers since phone-numbers covers it)
- [tagphp-5.2] ← php52 (52 != 5.2)
- pie-chart ← piechart
- pinvoke ← p-invoke
- pixel-bender ← pixelbender
- playframework ← play-framework
- plsql ← pl-sql
- plugins ← plug-ins
Note: Also eliminate plug-in since plugin covers it. - prepared-statement ← preparedstatement
- primary-key ← primarykey
- profiling (eliminate profilingtools since profiling-tools covers it)
- progress-bar ← progressbar
- python-2.x (eliminate python2 since python-2 covers it)
- python-3.x (eliminate python3 since python-3 covers it)
- qt-creator ← qtcreator
- qt-designer ← qtdesigner
- quartz-2d ← quartz2d
- query-string ← querystring
- quoted-identifier ← quotedidentifier
- radio-button ← radiobutton
- raw-input ← rawinput
- real-estate ← realestate
- real-mode ← realmode
- real-time ← realtime
- redhat ← red-hat
- regex (eliminate regularexpression since regular-expression covers it)
- regex (eliminate regularexpressions since regular-expressions covers it)
- reporting-services ← reportingservices
- reportingservices-2005 ← reporting-services-2005
- reportingservices-2005 ← reportingservices2005
- reportingservices-2008 ← reporting-services-2008
- reportviewer ← report-viewer
- resourcedictionary ← resource-dictionary
- restructuredtext ← restructured-text
- retinadisplay ← retina-display
- row-height ← rowheight
- ruby-1.9 ← ruby1.9
- ruby-on-rails-3 ← ruby-on-rails3
- ruby-on-rails-3-beta ← ruby-on-rails3beta
- scripting-bridge ← scriptingbridge
- sd-card ← sdcard
- serial-number ← serialnumber
- server-side ← serverside
- service-broker ← servicebroker
- servlet-filters ← servletfilters
Note: Also eliminate servletfilter since servlet-filter covers it. - session-scope ← sessionscope
- shared-hosting ← sharedhosting
- shared-objects ← sharedobjects
- sharepoint2007 ← sharepoint-2007
- sharepoint2010 ← sharepoint-2010
- sharpdevelop ← sharp-develop
- shell-scripting (eliminate shellscript since shell-script covers it)
- shopping-cart ← shoppingcart
- show-hide ← showhide
- side-by-side ← sidebyside
- silverlight-3.0 ← silverlight3.0
- sms (eliminate textmessages since text-messages covers it)
- solr (eliminate apachesolr since apache-solr covers it)
- solutionexplorer ← solution-explorer
- spellchecking ← spell-checking
- splash-screen ← splashscreen
- sproutcore-2 ← sproutcore2
- sql (eliminate sqlquery since sql-query covers it)
- sql-developer ← sqldeveloper
- sql-injection ← sqlinjection
- sql-loader ← sqlloader
- sql-server ← sqlserver
Note: Also eliminate ms-sql since mssql covers it.
Note: Also eliminate ms-sqlserver since mssql-server covers it.
Note: Also eliminate ms-sql-server since mssql-server covers it. - sql-server-2000 ← sqlserver2000
- sql-server-2000 ← sqlserver-2000
- sql-server-2000 ← sql-server2000
- sql-server-2005 ← sqlserver2005
- sql-server-2005 ← sqlserver-2005
- sql-server-2005 ← sql-server2005
- sql-server-2008 ← sqlserver2008
- sql-server-2008 ← sqlserver-2008
- sql-server-2008 ← sql-server2008
- sql-server-2011 ← sqlserver2011
- sql-server-ce (eliminate sqlce since sql-ce covers it)
- sql-server-ce (eliminate sqlcompact since sql-compact covers it)
- sql-server-express (eliminate sqlexpress since sql-express covers it)
- ssms (eliminate sql-server-management-stu since sqlservermanagementstudio covers it)
- stackoverflow ← stack-overflow
- stack-trace ← stacktrace
- star-schema ← starschema
- statemachine ← state-machine
- std-pair ← stdpair
- stop-words ← stopwords
- string-formatting ← stringformatting
- strongname ← strong-name
- struts2 ← struts-2
- swingworker ← swing-worker
- symfony-1.4 ← symfony1.4
- system-calls (eliminate systemcall since system-call covers it)
- tag-soup ← tagsoup
- task-queue ← taskqueue
- team-build ← teambuild
- text-files ← textfiles
Note: Also eliminate textfile since text-file covers it. - text-formatting ← textformatting
- text-processing ← textprocessing
- tf-idf ← tfidf
- tfsbuild ← tfs-build
- third-party ← thirdparty
- threadpool ← thread-pool
- timeout ← time-out
- time-series ← timeseries
- time-zone ← timezone
- tokyocabinet ← tokyo-cabinet
- tomcat-5.0 ← tomcat5.0
- tomcat-6.0 ← tomcat6.0
- tortoisehg ← tortoise-hg
- transaction-log ← transactionlog
- try-catch ← trycatch
- tryparse ← try-parse
- tsql ← t-sql
- twitter-api ← twitterapi
- type-safety ← typesafety
- u-boot ← uboot
- ui-automation ← uiautomation
- ui-thread ← uithread
- unicode-string ← unicodestring
- unique-id ← uniqueid
- unit-testing (eliminate unittest since unit-test covers it)
- unit-testing (eliminate unittests since unit-tests covers it)
- unix-timestamp (eliminate unixtime since unix-time covers it)
- url-rewriting ← urlrewriting
- use-case ← usecase
Note: Also eliminate usecases since use-cases covers it. - user-agent ← useragent
- usercontrols ← user-controls
Note: Also eliminate user-control since usercontrol covers it. - user-input ← userinput
- user-profile ← userprofile
- userscripts ← user-scripts
- utf-8 ← utf8
- value-type (eliminate valuetypes since value-types covers it)
- video-card ← videocard
- visual-path ← visualpath
- visual-c++ ← visualc++
- visual-studio ← visualstudio
- visual-studio-2005 ← visualstudio2005
- visual-studio-2008 ← visualstudio2008
- visual-studio-lightswitch ← visualstudiolightswitch
- visual-studio-lightswitch ← visualstudio-lightswitch
- wcf (eliminate wcfservice since wcf-service covers it)
- wcf-data-services ← wcf-dataservices
Note: Also eliminate ado-net-dataservices since ado-net-data-services covers it. - web-application-project ← webapplicationproject
- web-applications ← webapplication
Note: Also eliminate webapplication since web-appliation covers it.
Note: Also eliminate web-app since webapp covers it. - webbrowser ← web-browser
Note: Also eliminate incorrectly spelled webbroswer. - webcontrols ← web-controls
- web-deployment-project ← webdeploymentproject
- web-design ← webdesign
- web-development ← webdevelopment
- web-hosting ← webhosting
- weblogic-10.x ← weblogic10.x
Note: Also eliminate weblogic10 since weblogic-10 covers it. - weblogic-11g (eliminate weblogic11 since weblogic-11 covers it)
- weblogic-8.x (eliminate weblogic8 since weblogic-8 covers it)
- weblogic-8.x (eliminate weblogic8.1 since weblogic-8.1 covers it)
- weblogic-9.x (eliminate weblogic9 since weblogic-9 covers it)
- webparts ← web-parts
Note: Also eliminate web-part since webpart covers it. - web-scraping ← webscraping
- web-services ← webservices
Note: Also eliminate webservice since web-service covers it. - web-site-project ← websiteproject
- winapi ← win-api
Note: Also eliminate win32-api since win32api covers it. - windows-7 ← windows7
- windows-authentication ← windowsauthentication
- windows-mobile ← windowsmobile
- windows-server-2008 (eliminate server2008 since server-2008 covers it)
- windows-services (eliminate windowsservice since windows-service covers it)
- windows-xp ← windowsxp
- word-count ← wordcount
- word-wrap ← wordwrap
- windows-foundation-4 (eliminate wf4 since wf-4 covers it)
- wpftoolkit ← wpf-toolkit
- xml-binding ← xmlbinding
- xml-parsing ← xmlparsing
Note: Also eliminate xmlparser since xml-parser covers it. - xml-rpc ← xmlrpc
- xml-schema ← xmlschema
- xml-serialization ← xmlserialization
- xml-simple ← xmlsimple
- xna-4.0 ← xna4.0
- zen-coding ← zencoding
- z-index ← zindex
- z-order ← zorder
So, out of near 2,500 tag synonyms (and suggestions) that currently exist, almost 500 of them only differ via one or more hyphens. A whopping 20% of our tag synonyms serve no purpose!
master ← synonym
relationship for all the tags in the system, not necessarily which tag should exist in the grand scheme of things. Currently, you can no longer create tags which differ from another tag by only a hyphen, and a tag must exist in the system before you can suggest it as a synonym; so the loophole is closed. It's just a matter of cleaning up all the ones that have already gotten through.