Path: utzoo!utstat!helios.physics.utoronto.ca!news-server.csri.toronto.edu!mailrus!cs.utexas.edu!samsung!uakari.primate.wisc.edu!ames!amdcad!light!bvs From: bvs@light.uucp (Bakul Shah) Newsgroups: news.software.b Subject: Splitting news access from its presentation Summary: Define an object oriented interface to access news Message-ID: <1990Mar14.233441.28554@light.uucp> Date: 14 Mar 90 23:34:39 GMT Reply-To: bvs@light.UUCP (Bakul Shah) Organization: Newsreaders Anonymous Lines: 65 Keywords: Reading all these news reader reviews makes me think we need to separate the issue of *presentation* of news from its *access* (roughly speaking. I can't think of a better way of expressing what i have in mind). While all the readers reviewed here so far and even Notes and readnews (remember?) let me access the news system (i.e. let me read/discard articles, tell me if there is something not read by me in a group, subscribe/unsubscribe groups etc.) they don't present this information in the way _I_ like. If the access layer is separated out, people can concentrate on building better presentation software or even embedding news access in other software. Similarly, people can experiment with other ways of organizing the news database as long as they provide the same access interface. Here is the basic idea to get the ball rollling. - *Model* the news system as a set of objects and relationships between them. Define operations to add/delete/change these objects and relationships. Then relaynews, expire, news-readers all become specialized applications that will access the news objects via a clean interface. Group Operations: create, delete moderate, un-moderate // and other attribute changing ops add-article, delete-article add-sub-group, delete-sub-group Article Operations: create, delete send-to-system, receive-from-system attach-property, detach-property User operations: add-user, delete-user // these may be implicit subscribe-to-group, unsubscribe-from-group read-article, write-article cancel-article, reply-to-article filter-group // to filter out unwanted stuff - Maintain important relationships such as articles-read-by-user, articles-not-yet-sent-to-system, articles-ready-for-expiry, group-expiration-schedule, groups-we-are-interested-in, groups- our-neighbor-wants and so forth. This is just to give a flavor of what can be done. A real design would involve specifying lots of details. I suspect most of the code to implement these objects can be cribbed from existing tools. The important thing is to a) come up with a model that accurately (and simply) reflects how a news system is accessed in real life and b) replace built-in dependencies on various specific files/directories with an object interface. I might fer'nstance want to suck-up all the news in a news-server with 4Gig virtual address space and simply dole out articles as requested. So. WhaddayaThink? -- Bakul Shah bvs@BitBlocks.COM ..!{ames,sun,ucbvax,uunet}!amdcad!light!bvs