
SIBA PRESENTS THE PROFESSIONAL FACE OF A PROFESSIONAL INDUSTRY PROMOTING THE INTERESTS OF INDEPENDENT BREWERIES SIBA goes about highlighting the interests of beer drinkers and independent breweries in a number of other ways : Politically : SIBA is consulted by governing bodies such as DEFRA , Office of Fair Trading etc . regarding issues relevant to the industry . For example , the Review of Beer Orders , the Review of Duty systems , Drink Driving and the National Alcohol Strategy Promotionally : SIBA actively raises the profile of genuinely independent small breweries so as to provide a greater choice of craft beer to the public through the organisation of such events as regional beer festivals and the SIBA National Beer Challenge . Co-operatively : SIBA is divided into regions , which hold regular meetings , where members are able to express their views and concerns . These concerns are taken by regional representatives to the National Council who are then able to address them officially . The SIBA grapevine is highly efficient and is an invaluable tool in encouraging co-operation in such areas as highlighting changes that need to be made on behalf of the beer drinker and the exchange of expertise Professionally : SIBA members sign-up to a series of By-laws and a Code of Practice , which helps ensure that high standards of business practice and beer production are maintained Informatively : SIBA publishes its own magazine every two months . The SIBA Journal carries technical articles covering all aspects of brewing , by expert authors . It also keeps members informed of the Society 's campaigning activities and contains vital industry information Intro | SIBA 's role | SIBA Council The Society of Independent Brewers was founded in 1980 under the title The Small Independent Brewers Association ( SIBA ) to represent the interests of the growing numbers of independent brewing companies in the UK . It changed its name in 1995 to reflect better the changing aspirations of its members , but maintained its original acronym . SIBA aims to ensure that its members ' products are always of high quality and membership is conditional upon adhering to the Society 's Code of Practice and Bye-Laws . Beer and ale have been traditional and wholesome foods and beverages for well over 2000 years , and many styles are indigenous and unique to the British Isles . SIBA members seek to preserve these traditional styles and their traditional methods of manufacture , whilst at the same time demonstrating the skill of their craft through creativity , invention and innovation . SIBA is a Company Limited By Guarantee . That means that it is run by a Council of ' Trustees ' . These are appointed to represent members from each of SIBA 's Seven regions . In addition members with particular skills can also be co-opted onto Council 