Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror

Slashdot videos: Now with more Slashdot!

  • View

  • Discuss

  • Share

We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).

×

+ - DiscoRunner Applesoft BASIC Interpreter Comes With Close To A Thousand Programs-> 1

Submitted by beaverdownunder
beaverdownunder (1822050) writes "DiscoRunner is a multi-dialect BASIC interpreter. Its initial release supports Integer and Floating Point (Applesoft) BASIC from the Apple II.

DiscoRunner is different from other BASIC interpreters in that it is 99.5% compatible with the original languages. It accomplishes this by heavily simulating the host hardware (the Apple II) almost to an emulator level without the drawbacks of running an actual emulator. For example, BASIC programs are saved as text files. We can also add new functionality, such as an editor, a navigable CATalog and a coloured LISTing mode.

The current release has hi- and low-resolution graphics support (rendered in 3D OpenGL) including shape table support, sound (via machine language sound routines), and basic 6502 emulation (primarily used for sound). It supports mouse and gamepad controls.

DiscoRunner comes with a library of close to a thousand classic programs to play, edit and muck around with."

Link to Original Source

Comment: Apple Integer BASIC Chess (Score 4, Interesting) 204

by beaverdownunder (#48921455) Attached to: Computer Chess Created In 487 Bytes, Breaks 32-Year-Old Record
    0 GOSUB 10000
    1 INPUT "DO YOU WANT INSTRUCTIONS (Y OR N)?",A$: IF A$#"Y" AND A$#"N" THEN 1: IF A$="Y" THEN GOSUB 30000
    2 REF=5: CALL -936
    3 INPUT "COMPUTER TO PLAY WHITE(0) OR BLACK(1)",WHO
    4 IST=0
    5 DIM WC(99),BC(99)
    6 DIM V(6),P(26),C(3)
    7 DIM KING(16)
    8 DIM A(70)
   10 DIM M(120),W(120),B(120),I(6)
   11 DIM G(100)
   12 FOR X=1 TO 120:M(X)=0: NEXT X
   14 FOR X=1 TO 99:W(X)=0:B(X)=0: NEXT X
   15 FOR X=2 TO 9:X1=10*X:X2=X1+1:M(X1)=7:M(X2)=7: NEXT X
   16 DIM STR$(10),FILE$(8),RANK$(8)
   17 FILE$(1)="A":FILE$(2)="B":FILE$(3)="C":FILE$(4)="D":FILE$(5)="E":FILE$(6)="F":FILE$(7)="G":FILE$(8)="H"
   18 RANK$="12345678"
   20 FOR K=1 TO 21:K2=K+99:M(K)=7:M(K2)=7: NEXT K
   22 FOR K=32 TO 39:K2=K+50:M(K)=1:M(K2)=-1: NEXT K
   23 M(22)=4:M(23)=2:M(24)=3:M(25)=5:M(26)=6:M(27)=3:M(28)=2:M(29)=4
   25 FOR K=22 TO 29:K2=K+70:M(K2)=-M(K): NEXT K
   30 I(1)=12:I(2)=15:I(3)=10:I(4)=1:I(5)=6:I(6)=6
   35 V(1)=1:V(2)=3:V(3)=3:V(4)=5:V(5)=9:V(6)=10
   40 P(1)=-1:P(2)=1:P(3)=10:P(4)=-10:P(5)=0:P(6)=1:P(7)=-1
   45 P(8)=10:P(9)=-10:P(10)=-9:P(11)=-11:P(12)=9:P(13)=11:P(14)=0
   50 P(15)=8:P(16)=-8:P(17)=12:P(18)=-12:P(19)=19:P(20)=-19
   55 P(21)=21:P(22)=-21:P(23)=0:P(24)=10:P(25)=20:P(26)=0
   60 C(1)=8:C(2)=0:C(3)=3
   80 IF WHO=1 THEN 90
   85 M(25)=6:M(26)=5:M(95)=-6:M(96)=-5
   90 GOSUB 5000
   93 FOR II=1 TO 120:W(II)=0:B(II)=0: NEXT II
   95 IF WHO=1 THEN 100:T2=0: GOTO 1000
  100 REM  MAKE MOVE
  101 GOSUB 4000
  105 Z9=0
  110 GOSUB 4200
  115 GOSUB 5000: IF WHO=0 THEN 1000
  116 M9=M9+1: IF M9>REF THEN 120
  117 IF T2>4 THEN 120: IF IST=1 THEN GOTO 120
  118 F2=9-F2:T2=9-T2: GOSUB 4200: GOSUB 5000: GOTO 100
  120 REM  FILL CONTROL ARRAYS
  122 N8=0:IST=1
  125 FOR X1=22 TO 99:WC(X1)=0:BC(X1)=0: IF M(X1)=6 THEN BKING=X1: IF M(X1)=-6 THEN WKING=X1: NEXT X1
  130 FOR X=22 TO 99: IF M(X)<1 THEN 170: IF M(X)=7 THEN 170: GOSUB 8000: IF N9=0 THEN 170
  150 FOR X1=1 TO N9:TO=G(X1)-G(X1)/100*100: IF M(TO)>0 THEN 168
  164 N8=N8+1:A(N8)=G(X1)
  168 BC(TO)=BC(TO)+1
  169 NEXT X1
  170 NEXT X
  172 FOR X=22 TO 99: IF M(X)>-1 THEN 180: GOSUB 8000
  173 IF N9=0 THEN 180
  174 FOR X1=1 TO N9:TO=G(X1)-G(X1)/100*100:WC(TO)=WC(TO)+1
  176 NEXT X1
  180 NEXT X
  181 GOTO 3000: REM  CASTLE LOGIC
  182 REM  FILL KING  CONTROL ARRAY
  184 KING(1)=BKING+1:KING(2)=BKING-1:KING(3)=BKING+10:KING(4)=BKING-10
  185 KING(5)=BKING+11:KING(6)=BKING-11:KING(7)=BKING+9:KING(8)=BKING-9
  186 KING(9)=WKING+1:KING(10)=WKING-1:KING(11)=WKING+10:KING(12)=WKING-10
  187 KING(13)=WKING+11:KING(14)=WKING-11:KING(15)=WKING+9:KING(16)=WKING-9
  190 V9=-10000:I9=0: FOR X4=1 TO N8:N4=0:F4=A(X4)/100
  210 T4=A(X4)-F4*100:F5=M(F4):T5=M(T4)
  212 REM  FIND MOVES OFPIECE IN PRESENT POSTION.
  214 X=F4: GOSUB 8000
  225 M(T4)=M(F4):M(F4)=0
  235 GOSUB 9000: IF N4<=V9 THEN 255
  245 V9=N4:F9=F4:T9=T4
  255 M(F4)=F5:M(T4)=T5:
  256 Z9=Z9+1: IF Z9>20 THEN Z9=1: TAB 26: VTAB Z9: PRINT F4;" : ";T4;" V= ";N4
  259 NEXT X4
  270 F1=F9:T1=T9:M(T1)=M(F1):M(F1)=0:F6=F1-F1/10*10-1:F7=10-F1/10:T6=T1-T1/10*10-1:T7=10-T1/10
  280 IF WHO=1 AND F1=22 THEN QROOK=1
  281 IF WHO=1 AND F1=29 THEN KROOK=1
  282 IF M(T1)=6 THEN MKING=1
  283 IF WHO=0 AND F1=22 THEN QROOK=1
  284 IF WHO=0 AND F1=29 THEN KROOK=1
  310 PRINT "FROM ";F6;F7;" TO ";T6;T7
  311 GOSUB 5000
  312 PRINT
  320 GOTO 100
1000 IF T2>4 THEN 120
1005 M9=M9+1: IF M9>5 THEN 120
1010 IF M9#1 THEN 1020
1015 F1=5:F2=7:T1=5:T2=5: GOTO 1500
1020 IF M9#2 THEN 1030
1025 F1=2:F2=8:T1=3:T2=6: GOTO 1500
1030 IF M9#3 THEN 1040
1035 F1=4:F2=7:T1=4:T2=6: GOTO 1500
1040 IF M9#4 THEN 1050
1045 F1=3:F2=8:T1=4:T2=7: GOTO 1500
1050 IF M9#5 THEN 1060
1055 REM  CASTLE KING SIDE
1056 F1=4:F2=8:T1=2:T2=8: GOSUB 4200
1057 F1=1:T1=3: GOSUB 4200: GOSUB 5000: GOTO 100
1060 GOTO 100
1500 GOSUB 4200: GOSUB 5000: GOTO 100
3000 REM  CASTLE
3002 IF MKING=1 OR M9>22 THEN GOTO 3400
3003 IQ=10
3005 FOR II=22 TO 99:ITYPE=M(II): IF ITYPE=6 THEN IK=II: IF ITYPE=5 THEN IQ=II: NEXT II
3010 IF WC(IK)>0 THEN 3400
3015 IF WC(IQ)>0 THEN 3400
3018 IF WHO=0 THEN 3200: REM  WHITE LOGIC
3020 REM  CHECK FOR KING SIDE CASTLE
3025 IF KROOK=1 THEN 3100
3027 IF M(27)#0 OR M(28)#0 THEN 3100
3030 IF WC(27)>0 OR WC(28)>0 THEN 3400
3035 M(28)=6:M(27)=4:M(29)=0:M(26)=0
3036 MKING=1
3040 GOSUB 5000: PRINT " OO": GOTO 100
3090 REM  CHECK FOR QUEEN SIDE CASTLE
3100 IF WC(25)>0 OR WC(24)>0 THEN 3400
3105 IF QROOK=1 THEN 3400
3107 IF M(23)#0 OR M(24)#0 OR M(25)#0 THEN 3400
3108 MKING=1
3110 M(24)=6:M(25)=4:M(26)=0:M(22)=0: GOSUB 5000: PRINT " OOO": GOTO 100
3200 IF QROOK=1 THEN 3300
3205 IF WC(24)>0 OR WC(23)>0 THEN 3400
3208 IF M(24)#0 OR M(23)#0 THEN 3300
3209 MKING=1
3210 M(23)=6:M(24)=4:M(22)=0:M(25)=0: GOSUB 5000: PRINT " OO": GOTO 100
3300 IF KROOK=1 THEN 3400
3305 IF WC(26)>0 OR WC(27)>0 THEN 3400
3308 IF M(26)#0 OR M(27)#0 THEN 3400
3309 MKING=9
3310 M(27)=6:M(26)=4:M(25)=0:M(29)=0: GOSUB 5000: PRINT " OOO": GOTO 100
3400 IF KROOK=1 AND QROOK=1 THEN MKING=1: GOTO 182
3599 REM  SOUND BUZZER
3600 FOR XXX=1 TO 30
3605 XX= PEEK (-16336)+ PEEK (-16336)+ PEEK (-16336)+ PEEK (-16336)
3610 NEXT XXX: RETURN
3800 INPUT F1,F2,T1,T2
3805 IF F1=0 OR F2=0 THEN GOTO 4050
3810 GOSUB 4200: GOSUB 5000: GOTO 3800
4000 REM  INPUT MOVE IN ALGEBRAIC NOTATION
4005 PRINT "YOUR MOVE": PRINT "XX-XX"
4006 INPUT STR$
4010 IF LEN(STR$)=0 THEN 4006
4011 IF LEN(STR$)<3 THEN 4012: IF STR$(1,3)="OOO" THEN 4150
4012 IF LEN(STR$)<2 THEN 4005: IF STR$(1,2)="OO" THEN 4100
4013 F1=0:F2=0:T1=0:T2=0
4014 IF LEN(STR$)<5 THEN 4005
4015 FOR II=1 TO 8
4020 IF STR$(1,1)=FILE$(II,II) THEN F1=II
4025 IF STR$(2,2)=RANK$(II,II) THEN F2=II
4030 IF STR$(4,4)=FILE$(II,II) THEN T1=II
4035 IF STR$(5,5)=RANK$(II,II) THEN T2=II
4036 NEXT II
4040 IF F1=0 OR F2=0 OR T1=0 OR T2=0 THEN 3800
4050 RETURN
4100 IF WHO=0 THEN 4120
4105 M(96)=0:M(99)=0:M(98)=-6:M(97)=-4
4108 RETURN
4120 M(92)=0:M(95)=0:M(94)=-4:M(93)=-6
4125 RETURN
4150 IF WHO=0 THEN 4170
4155 M(96)=0:M(92)=0:M(95)=-4:M(94)=-6
4157 RETURN
4170 M(95)=0:M(99)=0:M(96)=-4:M(97)=-6
4172 RETURN
4200 F9=1+F1+(10-F2)*10
4210 T9=1+T1+(10-T2)*10
4220 M(T9)=M(F9)
4230 M(F9)=0
4240 RETURN
5000 REM  PRINT  BOARD
5002 CALL -936
5005 FOR IB=2 TO 9
5010 PRINT : PRINT : PRINT 10-IB;
5015 FOR JB=10*IB+2 TO 10*IB+9
5018 IF M(JB)#O THEN 5022
5019 IF IB/2*2=IB THEN 5021
5020 IF JB/2*2=JB THEN PRINT " X ";: IF JB/2*2#JB THEN PRINT " . ";: GOTO 5034
5021 IF JB/2*2#JB THEN PRINT " X ";: IF JB/2*2=JB THEN PRINT " . ";: GOTO 5034
5022 IF WHO=0 THEN 5024
5023 IF M(JB)<0 THEN PRINT " W";: IF M(JB)>0 THEN PRINT " B";: GOTO 5025
5024 IF M(JB)<0 THEN PRINT " B";: IF M(JB)>0 THEN PRINT " W";
5025 TYPE= ABS (M(JB))
5026 IF TYPE=1 THEN PRINT "P";
5027 IF TYPE=2 THEN PRINT "N";
5028 IF TYPE=3 THEN PRINT "B";
5029 IF TYPE=4 THEN PRINT "R";
5030 IF TYPE=5 THEN PRINT "Q";
5031 IF TYPE=6 THEN PRINT "K";
5034 NEXT JB,IB
5035 PRINT : PRINT
5036 PRINT "  A  B  C  D  E  F  G  H"
5037 PRINT : PRINT
5040 RETURN
6988 REM   UPDATE  ARRAYS W AND B FOR
6990 REM   TRIAL MOVES.
6999 REM   UPDATE ARRAYS W+B FOR TRIAL
7000 FOR INDEX=-1 TO 1 STEP 2
7100 I8=I(5):K8=P(I8)
7110 IF INDEX=-1 THEN TEMP=F4: IF INDEX=1 THEN TEMP=T4
7200 B8=TEMP
7201 B8=B8+K8: IF B8<22 THEN 7350: IF M(B8)=7 THEN 7350
7220 IF M(B8)=0 THEN 7201
7222 IT= ABS (M(B8)): IF IT=5 THEN 7224: IF I8<10 AND IT=4 THEN 7224
7223 IF I8>9 AND IT=3 THEN 7224: GOTO 7350
7224 ITYPE=M(B8)/IT:OPOS=-K8:B7=TEMP
7226 B7=B7+OPOS: IF M(B7)=7 THEN 7350
7228 IF ITYPE=1 THEN 7230:W(B7)=W(B7)-INDEX: IF M(B7)=0 THEN 7226: GOTO 7350
7230 B(B7)=B(B7)-INDEX: IF M(B7)=0 THEN 7226
7350 I8=I8+1:K8=P(I8): IF P(I8)#0 THEN 7200
7400 NEXT INDEX
7500 RETURN
8000 IF M(X)=0 THEN RETURN : IF M(X)=7 THEN RETURN :N9=0:T1= ABS (M(X)):I8=I(T1):K8=P(I8)
8030 IF T1#1 THEN 8200:I6=M(X)/T1:I1=X+I6*11
8050 IF M(I1)>-1 OR M(I1)<1 THEN 8060
8054 GOTO 8090
8060 IF M(I1)<1 OR M(I1)=7 OR M(X)>-1 THEN 8100
8090 N9=N9+1:G(N9)=X*100+X+I6*11
8100 I1=X+I6*9
8105 IF M(I1)>-2 OR M(X)<1 THEN 8150
8112 GOTO 8130
8120 IF M(I1)<1 OR M(I1)=7 THEN 8150
8130 N9=N9+1:G(N9)=X*100+I1
8150 I1=X+I6*10: IF M(I1)#0 THEN 8180:N9=N9+1:G(N9)=X*100+I1:I1=X+I6*20
8170 IF M(I1)#0 OR X/10#C(I6+2) THEN 8180
8174 N9=N9+1:G(N9)=X*100+I1
8180 RETURN
8200 B8=X
8201 B8=B8+K8: IF M(B8)=7 THEN 8350
8220 IF B8>99 OR B8<22 OR M(B8)=7 THEN 8350
8235 N9=N9+1:G(N9)=100*X+B8
8242 IF M(B8)#0 OR T1=2 OR T1=6 OR T1=1 THEN 8350
8250 GOTO 8201
8350 I8=I8+1:K8=P(I8): IF P(I8)#0 THEN 8200
8500 RETURN
8999 REM  EVALUATION SECTION
9000 FOR X1=22 TO 99:W(X1)=WC(X1):B(X1)=BC(X1): NEXT X1
9015 FOR X1=1 TO N9:TO=G(X1)-G(X1)/100*100:B(TO)=B(TO)-1: NEXT X1
9020 X=T4: GOSUB 8000
9025 FOR X1=1 TO N9:TO=G(X1)-G(X1)/100*100:B(TO)=B(TO)+1: NEXT X1
9030 GOSUB 7000
9100 FOR X1=22 TO 99:MM=M(X1): IF MM=7 THEN 9160
9102 IF M(X1)=3 OR M(X1)=5 THEN B(X1)=B(X1)-1
9105 C6=B(X1)-W(X1):N4=N4+C6
9108 IF MM=0 THEN 9160
9110 IF M(X1)<2 THEN 9120
9112 IF M(X1+11)=-1 THEN N4=N4-5*V(M(X1)): IF M(X1+9)=-1 THEN N4=N4-5*V(M(X1))
9120 IF C6>0 AND M(X1)<0 THEN N4=N4+4*V(-M(X1))
9125 IF C6<0 AND M(X1)>0 THEN N4=N4-8*V(M(X1))
9130 IF W(X1)<1 THEN 9160
9140 IF M(X1)=6 THEN N4=N4-5000: IF M(X1)=5 THEN N4=N4-50
9160 NEXT X1
9172 IF F5=1 THEN 9175: IF T5#0 THEN 9175
9174 IF M(T4+9)=-1 OR M(T4+11)=-1 THEN N4=N4-20
9175 N4=N4+8*V( ABS (T5))
9180 IF F5=5 THEN N4=N4-3
9182 IF F5=6 THEN N4=N4-10
9188 N4=N4+10
9200 REM   EXTRA POINTS FOR CONTROLING   SQUARES AROUND THE KINGS.
9205 FOR II=1 TO 16:INDEX=KING(II)
9210 N4=N4+B(INDEX)-W(INDEX): NEXT II
9220 REM    POINTS FOR BOARD CENTER.
9225 N4=N4+B(55)+B(56)+B(65)+B(66)-W(55)-W(56)-W(65)-W(66)
9230 REM    DEVELOPMENT!
9235 IF M(23)=2 THEN N4=N4-4
9240 IF M(24)=3 THEN N4=N4-2
9245 IF M(27)=3 THEN N4=N4-2
9250 IF M(28)=2 THEN N4=N4-4
9300 RETURN
9999 END
10000 CALL -936
10002 GOSUB 11111
10004 PRINT
10006 PRINT "      <<<<< COMPUTER CHESS >>>>>"
10008 PRINT
10010 GOSUB 11111
10015 PRINT
10020 RETURN
11111 FOR J=1 TO 38: PRINT "*";: NEXT J: PRINT "*": RETURN
12000 REM  SIMPLE-5 HEURISTIC CHESS BY MARK WATSON 714 271-8979
30000 CALL -936: GOSUB 11111: PRINT : PRINT "THIS IS SIMPLE-5 HEURISTIC CHESS BY"
30002 PRINT "MARK WATSON.  THE RULES ARE SIMPLE."
30004 PRINT "   1) MOVES ARE ENTERED AS FILE THEN": PRINT "      RANK OF THE STARTING POSITION,"
30006 PRINT "      THEN FILE AND RANK OF THE ENDING": PRINT "      POSITION. PUT A SPACE BETWEEN"
30008 PRINT "      THE STARTING AND THE ENDING PO-": PRINT "      SITIONS.  FOR INSTANCE, 'B1 C3'"
30009 PRINT "      MOVES THE KNIGHT IN FRONT OF THE": PRINT "      BISHOP'S PAWN."
30010 PRINT "   2) TO CASTLE ON THE KING'S SIDE ALL": PRINT "      YOU NEED DO IS TYPE 'OO' (NOT"
30020 PRINT "      '00'); AND ON THE QUEEN'S SIDE,": PRINT "      'OOO'.": PRINT "   3) THE COMPUTER DOES NOT CHECK FOR"
30022 PRINT "      ILLEGAL MOVES AND THEY MAY CAUSE": PRINT "      CAUSE STRANGE THINGS TO HAPPEN."
30023 PRINT
30024 PRINT "PRESS ANY KEY TO CONTINUE.": PRINT : GOSUB 11111
30026 IF PEEK (-16384)<128 THEN 30026: POKE -16368,0: RETURN
32767 POP : END

Comment: systemd is hypocritical (Score 5, Interesting) 553

by beaverdownunder (#48815911) Attached to: SystemD Gains New Networking Features

It annoys me that someone like Poettering, who only had PulseAudio come into use because of the ability distributions had to easily change core operating system components (and wouldn't have had the existing audio-subsystem been entrenched), would then proceed to develop something specifically intended to lock down its own existence and prevent its replacement by something else. It's hypocritical.

While I totally understand why he did it -- nobody wants to put a great amount of time into something only to have it superseded -- it flies in the face of open source in general, where you contribute to an evolving 'thing', and that while your specific contribution may not exist in the future, you can be happy that you took part in the evolution of the whole, and not feel the need to stamp your face on it for perpetuity.

It also sets a dangerous precedent. What's going to be locked down next, in the name of stability, or speed, or whatever else (when it's really about someone trying to 'make their mark'?) Do we lock down the file system? Only one file system for Linux, full stop? Do we lock down the network transports? The window manager? The terminal? The command-line applications?

Then what? Do we then create a global committee, made up of people who maintain the existing components (of course), to make decisions about those components and whatever's left into the future?

I mean, yes, I agree in that case something else will surely (and quickly) rise in Linux's place (I mean, who wants to put in the time to help projects who only exist to serve their creator's vanity) but it seems a shame that Linux should end this way.

Comment: Re:So is the Internet Archive just a piracy site n (Score 1) 198

by beaverdownunder (#48753025) Attached to: Archive.org Adds Close To 2,400 DOS Games

I think they think that by not allowing you to download the binary they're in the clear. Unfortunately you _are_ downloading it, to the emulator running in your web-browser.

There was a conference down here in Australia on game preservation last year and one of the most discussed subjects was precisely this -- and the conclusion was simply that what archive.org is doing in this context can't be considered as anything other than illegal.

Now whether or not anyone complains or not is something for IA to deal with, but let's not have any confusion that using the site to play games is in no way any more legal than just finding a torrent or an 'abandonware' site and downloading them.

Comment: Rights holders (Score 2) 110

by beaverdownunder (#48545957) Attached to: Spectrum Vega: A Blast From the Past

I'll be interested to see how many rights holders agree to contribute their games for free, especially when the unit itself is being sold for such a tidy profit. I can't imagine it would be very many.

Or maybe they plan on shipping the games of 'uncontactable' (ie those who don't reply) rights holders and 'remove' them if they later turn up and complain? Kind of shifty if this is the case.

Comment: Re:Not resigning from Debian (Score 4, Insightful) 550

It should be obvious to anyone that RedHat has a vested interest in making the vast majority of Linux distributions dependent on technology it controls. Linux is its bread-and-butter.

It appears RedHat has realised that, through systemd, it can readily provide preferential support for its own projects, and place roadblocks up for projects it does not control, thus extending its influence broadly and quickly. By using tenuous dependencies amongst its own projects it can speed adoption even faster.

Once it has significant influence, and the maintainers of competing projects have drifted away either out of frustration or because they are starved of oxygen, RedHat knows that they can effectively take Linux closed-source by restricting access to documentation and fighting changes that are not in their own best interests.

At this point, they can market themselves as the only rational choice for corporate Linux support -- and this would be perfectly reasonable because they would have effective control of the ecosystem.

Linux (as in a full OS implementation) is an extremely complex beast and you can't just "fork it" and start your own 'distro' from scratch anymore -- you would have to leverage a small army to do it, then keep that army to maintain it. It's just not practical.

At the same time, Linux has matured to the point of attaining some measure of corporate credibility, and from RedHat's point of view, it no longer needs its 'open source' roots to remain viable. RedHat also, understandably, fears potential competition.

Through systemd and subsequent takeovers of other ecosystem components, RedHat can leverage its own position while stifling potential competition -- this is a best-case scenario for any corporation. It will have an advantage in the marketplace, potential customers will recognise that advantage, and buy its products and support contracts.

I hope you can understand why many see this as an extremely compelling case. Arguing that RedHat has 'ethics' and would 'never do such a thing' is immature and silly -- RedHat is a corporation, it exists to profit from its opportunities, just like any other company. To attempt to argue that it would not do so is contrary to what we can assume is its default state.

It's no 'conspiracy theory' to assume that a corporation will behave like a corporation; arguing that it is just makes one look like a naive child. systemd is one large step toward RedHat gaining the ability to reap what it has sewn -- for its benefit and not necessarily ours.

Comment: Re: Administrators dislike constraint based system (Score 4, Insightful) 863

Whether one dislikes systemd or not isn't necessarily because of what it does or doesn't do. The issue for many people (myself included) is simply that it's a monolith that keeps trying to grow larger in an "open" world that was meant to stand for a certain amount of platform agnosticism and component independence.

I realise that systemd can make life easier for some more novice users but to be true to the spirit of the open source community I would expect it to be optional where it can be so. When it starts to intrude into critical areas and make itself mandatory in some releases, that bothers me. It makes me think that the whole business is a sneaky attempt to subvert the Linux kernel and eventually take control of Linux as a whole.

Suburbia is where the developer bulldozes out the trees, then names the streets after them. -- Bill Vaughn

Working...