
On Radio 4 's Today programme on 10 April , the Church of England Education Officer Canon John Hall argued - inaccurately - that campaigners against faith schools are proposing a ' French model ' , and made flawed claims about the church 's contribution to the development of education . There are , of course , legitimate arguments to be made on both sides of the faith schools debate , but the BHA calls on Canon John Hall to stop muddying the water with false claims . ' The nation 's children deserve a higher standard of debate on the expansion of faith schools . ' said Hanne Stinson , BHA executive director , ' Their future depends on it . ' The French secularist model Canon John Hall , on the Today programme , said : ' The sort of knee-jerk reaction answer to ' how do you educate for life in a diverse multi-cultural society ? ' by some people is that you leave faith outside the door , that you teach about religion but you certainly do n't teach religion . Now frankly , that 's the sort of French secularist model . ' The Canon is entirely incorrect in his assessment of the French system , and his criticism of humanist ( and also religious ) campaigners ' approach to issues of religion and schools is similarly flawed . It is wrong to label as supporters of a French-type system those who call for inclusive community schools that accommodate those of all beliefs instead of religiously segregated schools . The French ignore religion ; faith schools evangelise about it . The middle road is objective , fair and balanced teaching about religions and non-religious beliefs that does not set out to persuade but to educate . This is what the BHA has long advocated and set as policy . This approach also has the support of many religious people - the Christian think tank Ekklesia , for example , has criticised John Hall 's comments ( click here ) History of church schools Canon John Hall said : ' Of course , the churches founded the educational system - and 4700 schools are Church of England , another two and a half thousand are Catholic - so 7000 - there they are - and they 've been there since well before the state started doing anything . ' Clearly the only sensible approach to take to the debate over faith schools and academies today is to look at current circumstances . Because the Church of England in particular , however , has made great play of the longstanding involvement of the church in education as a defence of its continued involvement , we feel that the glowing narrative of church school history must be challenged . Most of today 's church schools as institutions and the great majority as buildings were in fact created with public money . Since 1944 the church has contributed nothing to either running or building costs of voluntary-controlled schools and nothing to running costs and now only ( at most ) 10 % to building costs of voluntary-aided schools - but nothing , under recent government policies , to the current programme of rebuilding of secondary schools . The church in fact is the recipient of huge state aid , as are and will be the other religious groups as they gain their own faith schools . The church actually opposed state involvement in schools throughout the 19th century until it was finally forced to compromise in 1870 . When in 1798 Joseph Lancaster opened the first monitorial school in Southwark it aroused antagonism from the Church of England for its offering of non-sectarian education . In 1808 Bishops in the House of Lords opposed a Bill proposing a measure of free education . Small Government grants were introduced in the 1830s but when in 1839 the government proposed that the grants be conditional on inspection of schools and proposed also the formation of a non-sectarian State normal school for training of teachers , it was strongly opposed by the Church of England . The Church also defended its right to impose Anglican education on all by opposing bitterly the minimal conscience clause suggested by the government and sought by non-conformists , The introduction of a system of publicly funded education in 1870 was bitterly contested by the churches , who secured an interval to create new schools before the local school boards were allowed to start their own . In 1876 Joseph Chamberlain said that the Church party were trying everywhere ' to stunt the programme of the board school system , to prevent the erection of new schools and the provision of sufficient accommodation , to prevent the reduction of the cost of education [ ie school fees ] to the parents and to prevent the expenditure necessary to secure the efficiency of the schools ' . A notably sympathetic history , Church and State in English Education by Marjorie Cruickshank , states that ' Attempts to secure State intervention were baulked for many years by religious antagonisms . ' Brian Gates , in Faith Schools - Consensus or Conflict ? , says , ' Arguably , it was the tussling between [ the Anglican National Society and the non-conformist British and Foreign Schools Society ] that delayed the introduction of a fully comprehensive school system funded by public taxation . ' So the Churches have nothing to be proud of in their pre-1870 record . Rather , they held back education in England and Wales so that our position was notably worse than that of most of Europe and way behind that in Scotland , largely because of the religious beggar-my-neighbour opposition to any state intervention in schools . Note for editors : For more information and comment , contact Andrew by email or by telephone on 020 7079 3584 or 07855 380633 The British Humanist Association has been campaigning against faith schools and academies controlled by religious interest groups for many years , and published a widely-regarded policy paper in 2001 which has been revised and reissued this year . You can read it and about it here and about the BHA 's views on the Government 's Education and Inspections Bill here We welcome the current renewed interest in faith schools , stimulated by the threats posed by the Government 's Education Bill , and by the concerns of teachers , expressed through their unions , in the current conference season . 