This is a file for accumulating ideas on things that could (should)
	be done to the Network Map program.


	BUGS:
	-----

In ttymode, command "Write TEK" crashes and "write Hardcopy" writes garbage.
	-There's all sorts of possible causes here.
	-First off, things have not been "placed", so lots of coords are 0.
	This could result in compute error, but seems only to cause PS to put
	out lots of zeros.  There's also the possibility that something is
	following an uninitialized pointer under these conditions.
	-Also the colors haven't been set and some pointer here might point
	to never-never land.  Some work was done, it's not complete.
	-This would really be more straight forward if the "drawing" were
	more abstracted (in planning stages) and if there were config for
	when no display was around (right now depend too much on xrdb).

Point-to-Point nets don't show protocol stripes.

Pointing at Point-to-point nets doesn't quite work right.
	If exactly horizontal or vertical the "right general region" test
	fails even if dead-center.

SysUptime comes out wrong, seems to be wrapping.
	At least on cisco 8.1(14), it looks like 8.2 has this OK so it was a
	cisco bug, not a Map bug.  I'll just wait until my last two systems
	are upgraded before removing the bug note here.

When dimensions are specified for a host, the box is correctly expanded but
	the label is not centered.  This also doesn't work with PostScript,
	in fact the sized hosts with no text are wrong in PS!

Should notice taps that miss the associated net.
	-Presently it will comment if you've selected connectivity debugging
	and it punts drawing them.
	-It would be nice if there could be a mark on the tap line, i.e. draw
	it part way and terminate in an arrow (?labeled).  It would be even
	better (but hard) if it could jog or go at an angle!
	-But when redrawing without highlight after selection they get shown
	anyway.

There appears to be some kind of fence-post in the shape (at least nets) code.
	Carefully check over the code, it was particularly noticable in the
	old DTE nets (the offset at one end is one-bit different and
	increasing the size only has an effect at multiples of two).  There
	was also a correction for a fencepost error in the X10 server that
	shows up on horizontal nets.  This unfortunately causes other output
	formats to look bad and has been removed.
	Usability features:
	-------------------

Finish splitting apart the huge program into shared modules.
	In particular various additional string routines.

Work on SNMP some more.
	Needs better error handling, especially missing vars.
	Should try different addresses on retransmissions, in fact it would
	be nice if some sort of reliability was kept for each address so we
	could try ones that had worked before.

Integrate SNMP/ICMP (needs async stuff in both)
	ICMP port unreachables for SNMP messages should make SNMP quit.

Need a command which does what check does, but gives one-liners.

Blank line doesn't do the right thing on terminal input.
	For now I just make it ignore this (to avoid error), eventually it
	should do some automagic like the display version.  The best
	implementation of this requires the augmented GetLine.  There also
	needs to be some hook for suspend/resume to get a new prompt so it's
	not needed for this case (this also appears later).

"Help blah" should do something.

CTRL-left in open space should just tell you what coord you clicked on.

Data structures should be more conservative of memory space.
	Exactly what size integer is needed for various integer fields?
	Share O/S and Hardware fields?
	Build structure for faster lookup of names/addresses that combines
	space for similar nick-names.
	Maybe some kind of generalized OBARRAY for text tokens?
	Don't reserve space for geometry for hosts that don't have it!

Geometry file should specify a default domain (or list) for the names in it.
	This allows getting away from the current hack where the order of the
	Hosts file matters.
	-The hack of allowing a hint {in braces} for disambiguating is a good
	start.  It should probably be made more general (in the process of
	regularizing lots of stuff).  But, the original idea still has merit
	for when I've selected a particular geo file, it would be nice if
	abbrevs preferred hosts "local" to that map.

Should highlight a selected net some how.
	Maybe draw a box around it?  Won't show up well on B&W, but selection
	already does badly there.  Maybe B&W can draw just the box (i.e. not
	filled (or filled with normal background).

Allow (then add) media declarations in Geometry file.
	Initially don't say much, default thickness and color.
	Place in files near "Simulate a key", eventually any other info for
	key would go here, too.  Recognize some line to place key and
	generate automatically from media decls and what's used on map
	(changes with "show" command!!)

Add a small window with a key to the colors.
	Replace the current hack (i.e. the fake nets in Geometry and the code
		to notice them and display anyway).  [See previous]

Titles don't show up on PostScript output.
	-But how to arrange not to get the ones for the fake key?
	I discussed this a bit with JRD, what we want is some kind of boolean
	expression that can be given with ANY type that says when it shows.
	The elements to combine are other things showing, protocol, color vs
	B/W, active vs passive, etc.
	-Barmar wrote a direct pass at this without the features and it's
	been incorporated, only the bells and whistles need adding.

Fix find_file to allow more forms.
	"~/...", "~foo/..." and "/..." style names, both in name (also don't
	try path) and in path elements.

Make the program compile time configurable.
	-This is started, but it needs cleanup and lots more.
	-clean up script some more, some form of simple scripting would make
	it easier to extend and make global changes.
	-----Ideas on things to configure:
	Protocols to include (IP/Chaos)?
		Generalize somehow.  The Chaos or IP choice is hard coded in
		too many places.  It would be nice to make the selection of
		protocols compile-time configurable and to write modules for
		other protocols.  This is somewhat difficult to do while
		keeping the idea that Geometry files (etc.) can be freely
		traded around.  Need to be able to recognize and print
		addresses for protocols not supported, but know enough to not
		test them for operation?
	Output forms (X, PS, TEK, TeX?)
		Someone with both color and black and white postscript
		printers should work on extending the postscript code to deal
		with colors.  The Tektronix color support needs improvement.
		The various modules have a lot in common, should try and
		parameterize somehow and have common routines.
	Filenames.
		Particularly the "/usr/lib/nets" directory...

Information printed out for networks should be conditionalized.
	I.e. depend on "Show Chaos/Show IP".
	This lets you get a list of just the Chaos hosts on a net.

Should have an option (in Geo?) to not show protocol stripes.
	After all, most maps others make will be only IP and it's not too
	informative when there's only one protocol possible.

Should it use a Toolkit?

Multi-thread main level.
	-Allow inputs (including screen updates) while polling!

Recognize suspend/resume when in ttymode and reprompt.

Should notice (comment on) HOST entries with blank Software/Hardware fields.
	At least should always substitute the "Unknown" strings.
	Should comment when "File data warnings debugging turned on."

Should put things into the display as they are read out of the file.
	Note that PlaceMachine only puts taps to media that are already
	loaded, so PlaceNet needs to adjust all displayed hosts on it.

Should do number of hosts on net count ONCE.
	One pass over the Host data, have to ensure not counting multis.

Subnet masks should be given per-net in geometry rather than built in.
	When supporting multiple geometries this allows different views to
	treat different levels of the heirarchy with/without subnetting.
	Actually this is sort of done, but there should be some explicit way
	to give them rather than relying on the funny defaulting which
	assumes masks always break at byte boundaries.

Keep the comments (end-of-line field) from the entries in Geometry
	Print these out as part of the data when displayed.

The PS code ought to compute more in the print engine.
	The commands ought to be just the minimum and all computed coords
	should be done by PS engine.  A lot of this is done (hosts are
	complete, I think).  The text labels for nets still look funny and
	the boxes for protocols might be drawn with less by carry over.

Information printed about hosts should be more thoughtfully formatted.
	e.g.	XX.LCS.MIT.Edu is a PDP10 running TOPS20
		Aliases: LCS.MIT.EDU, MIT-XX.ARPA, MIT-XX, and XX
		IP Addresses: 18.26.0.36 and 10.0.0.44
		Chaos Address: 2420 (5/20)
		Advertised protocols:
			CHAOS: SIMPLE: TIME
			       STREAM: SMTP, NAME, SEND, MAIL, TELNET, SUPDUP
				       FILE, EXPAND-MAILING-LIST
			IP: TCP: TIME, FINGER, TELNET, FTP, SMTP
	This has been started, more needs to be done.

Make additional commands to (re-)read data files.
	(and either replace or add to existing data)
	Geometry works mostly! -That's what's important anyway
		-Still leaks memory!
	Make incremental Hosts files?
	Have geo files use something like "require" to get host files, when
	added this will obviate the need for default map.cf to load hosts.

Write a "quick and dirty" hack to snarf and grok zone transfers.
	-Need to deal with the fact that lots of places don't put various info
	(HINFO, WKS) in the DNS, allow a config (cmd line opt) to fake it.

Titles should at least be "delete"able.
	Should also be some way to make them conditional on what is "shown".
	I.e. some should only be visible when certain nets are, others only
	when Chaos is shown, others only when IP is, etc.

Add a command ("add" ?) for making placements by hand.
	It takes a generic line of input (as from file) and adds to database,
	then displays.

Add a shell escape command.
	Should allow substituting things like current host name (or address)

Frequent need to get "current" things.
	(i.e. Current host, Current address, etc.)
	Make up a standard set of routines (to get and set the "current"
	thing) and have anyplace that accesses/updates this call them.  They
	need to interact, i.e. setting one changes candidates for others.

Update needs optimization.
	Check out and start using partial update functions already written.

Need multi-line labels for nets/machines (add other info from data).
	-Should extend to titles (rather than hacking as seperate).
	Question:  How to represent, I'm inclined to TeX style (i.e. \\)

Layout for nets could be smarter (i.e. need less spec. in geo).
	Should find the position and length of the longer axis by what
	hosts are on that net.
	Maybe have the given position designate where the label goes, but if
	no size given compute max and min (independantly, allowing
	non-centered labels) for extent.  Width could default or be implied
	somehow by media, or this could be used to signal horizontal vs
	vertical distinction.

Should be able to seletively display hosts/nets for planning purposes.
	I.e. Show XX   Hide 4A    Hide 2A
	Maybe also Show/Hide based on Up/Down after that's in.
	I.e. Show only up hosts, show only reachable nets.  Inverses.

Should comment on additional things that should be shown.
	Hosts that connect to several nets at least one of which is shown.
	Host addresses that cannot be shown because there isn't a network.
	May need some way for geometry files to say that something is
	intentionally left out, otherwise you get too much clutter in some
	places (i.e. NEARnet map doesn't have the local nets, on purpose).

Verbose network listing should be better.
	Should give # of hosts registered (# displayed).
	Should only list hosts not displayed, and it should be formatted and
	the names should be mouse-sensitive (Way off).

Should support multiple fonts.
	This can usea table like media.

Some titles may want to be conditional
	(i.e. "Is CHAOS shown?").

Allow geometry specs to be relative to something else.

Should have menu interface to commands.
	The right mouse should be a menu of top level commands,
	leading to menus of sub-commands, ...

Include printers (and other service machines) and their spoolers,
	whether directly connected or via network.

On screen editing.  -Only networks still need to be done?
	-Rubber banding might be a nice touch.
	-Delete should be harder (or at least leave the host selected for
		ease in replacing)
	-Color selection aids?  [Note: the default colors are HORRIBLE!!]
	-A nice touch to this would be re-writing Geometry files with comments
		(i.e. copy Geo file that was read, but replace data parts
		with info from present layout.)
	
Should be able to re-set any of the options while running.
	Colors of various things.

Improve hardcopy ability.
	I.e. figure out what to do about colors, maybe expand the
	specifications allowed in the .Xdefaults.
	-This needs seperate customization to work in the absence of a
	display.

Hardcopy PostScript could include more information in small type.
	Some ideas:
	-Host address (next to each tap)
	-Aliases for a machine (have to limit some how)
	-Type of Hardware/Software
	What is and isn't included should be an option somehow.
	TEK may be able to do this also (but not quite the same...)

Add protocol stripes by the machine transciever cables.  There is a
	problem with making sure the same side gets used for the same
	protocol when there are multiple taps in the same direction.
	Maybe we just need to punt back to the concept of drawing
	multiple lines to avoid this.

Typed commands could be more electric (ala LispM).
	See ../../Library/parser/
	tty should run in cbreak to make this really flavorful...

Machines should have more different states and display them.
	Presently only selected/other, should have up/down
	interesting/important/bland type of stuff.  This should really
	interface to the monitor program, shouldn't it?

Add the ability to draw the things with arbitrary patterns.
	This is particularly valuable for black and white (both PostScript
	and monochrome displays should be supported).

Should do typeout through master window somehow rather than the
	present kludge with a seperate window running xterm.

Looking up nets that correspond with an address should be postponed.
	It should be set up as NULL initially, and should be looked up
	when it is needed!  [But don't keep looking up ones that fail]
	Should also make use of the NET entries in the NIC table.  Also
	make file of NET entries for MIT from stuff in HSTNET.

Should probably sort protocol lists after building them.
	Note that, for best listing, childless protocols should preceed any
	with children.  Within each of these two groups, alphabetical seems
	like the best choice.

Hardcopy output should spool it.
	[optionally]

Add more debugging flags.
	Ideas:  X-Events, some of the stuff elsewhere here (suggested
		additions, bad placement, ...)

Should combine main logic of X??.c, ps.c, and tek.c .
	Have a table/structure for each kind with pointers to appropriate
	routines or constants.

Should combine logic of cmd_hostat and cmd_ping in some way.
	Indirect through structure for protocol specifics.

Add "List O/S" and "List Hardware" commands.
	These require summarization, like protocols and media.

Ideas on additional things to do to a host:
	chup, chrut, hostat (with data), finger, echo (TCP/UDP), CGW-Stats,
	Daytime, Time, Arbitrary, ...  maybe even "pop up xterm that's
	telneted there" type stuff!

Protocol listing should do wrapping.
;;; Local variables for Emacs:

;;; Local Variables:
;;; mode: text
;;; fill-column: 77
;;; fill-prefix: "\t"
;;; End:
