
Web Journal of Current Legal Issues in association with Blackstone Press Ltd Bruce Grant and Mike Allen , University of Newcastle upon Tyne http://webjcli.ncl.ac.uk / The Web Journal of Current Legal Issues is the first United Kingdom general law journal to be published purely electronically using World Wide Web . The journal is refereed and published bi-monthly . The first issue was mounted on the Web on 17 March 1995 and the second issue will be mounted in mid-May . Notes for Contributors may be obtained directly from the journal site or from Mike Allen at Newcastle Law School . The journal is the brainchild of Mike Allen and Bruce Grant of Newcastle Law School , at the University of Newcastle upon Tyne . Mike is the journal 's editor and drew together a strong Editorial Board of fourteen members from a number of law schools around the country comprising a Committee of seven members responsible for the editing of the journal supported by seven advisory members . Refereed electronic journals have received recognition from HEFCE for the purposes of the next Research Assessment Exercise , the approach of which has helped generate material for the journal . The journal is published in association with Blackstone Press who are under-writing the venture and who will publish the Blackstone Yearbook of Current Legal Issues which will contain all the articles which appear in the journal . Design and presentation of the journal has been the responsibility of Bruce Grant . Contributions are accepted in data form only , whether by e-mail or on disk . After assessment by the relevant member of the editorial committee and refereeing , the contribution is marked up with HTML tags for browsing on the Web and also converted to rich text format to facilitate printing . The use of postcript files for printing was considered , and may yet be adopted in addition to rtf , but on the whole rtf was felt to be the more commonly acceptable format . Because the journal is first published electronically , it has not been thought sensible to provide page numbers . Traditionally a page-count has been used as a rough measure of the length of articles , but perhaps , as e-journals become established , a word-count will be seen as a better , and universally applicable method of comparison . One of the major advantages of electronic publishing is that articles and comments accepted for publication will be published promptly in the next issue as an electronic law journal does not suffer from space constraints . Too often , long delays between submission of articles and their publication has served to rob many of their topicality and much of their potential impact . This factor of speed of publication has helped provide the focus for the journal which is on current legal issues in judicial decisions , law reform , legislation , legal research , policy related socio-legal research , legal education , information technology and practice . While the focus of the journal is on current legal issues in the United Kingdom ( including European Union matters ) , the editors are keen to receive contributions which adopt a comparative approach . The editors are also keen to encourage academic debate and will welcome responses to articles or comments previously published . Undoubtedly electronic publishing will increase in the future as the potential of the medium is realised . In the first issue of the journal a taster of this potential was provided in an article by Robin Widdison , Director of the Centre for Law and Computing at the University of Durham , which contained links to other sites on the Internet . As more materials are published in this way such links will become more frequent and will totally alter the way in which we write articles or , for that matter , read them . Published in the Law Technology Journal : Vol 4 , No 1 Original publication date : May 1995 Web publication date : April 1997 