3 ms·
I'll ask a question, serious for me: Mostly you guys are way ahead of me in knowledge of current software tools, especially on Linux and 'open source software
by graycat 13y ago
I'll ask a question, serious for me:
Mostly you guys are way ahead of me in
knowledge of current software tools,
especially on Linux and 'open source
software' (OSS -- I had to look up that
one!).
But I'm doing a startup the center of
which is a Web site. If people like
the site, a huge if, then it could grow
to be a big thing around the world. Did
I mention if people like the site? People
might not like the site. But if they do
then I will need to grow a significant
server farm, etc.
So far I'm a solo founder and doing all
the work.
I'm keeping most of the site architecture
and software dirt simple. At the core of
some of the server side software are two
servers that have some software I wrote
implementing some applied math I derived --
still, just as computing, the architecture
and software are simple.
For various reasons, I decided to stand
on Microsoft's software. Here is my
thinking, and where am I on thin ice?
(1) I can understand that if I had
the knowledge and/or staff to know
some version of Linux and other OSS
in detail, then Linux and OSS might
offer me more power and flexibility.
My concern, forever, would be that I
would be getting in the business of operating
systems, middle ware, and tools, and
that is definitely not my business.
So, I'm eager to leave that work to
a vendor that specializes in such things,
and for such a vendor all I could see
was Microsoft. So, right, it sounds
like I want to pay money for my
operating system, middle ware, tools,
etc., and in a sense that is correct.
I.e., if something goes wrong, then
I want an 'account executive' to call
and ask for help.
(2) Sure, Linux and Unix have a long
and powerful background back through
Sun, Silicon Graphics, BSD, AT&T, etc.
But for my time on x86 I went from
PC/DOS to OS/2 to Windows XP, and
along that path, each year, I thought
that the OS I was using was likely
the most suitable for me on x86.
E.g., instead of PC/DOS or OS/2 on
x86, I was not going to buy a Sun
or SGI workstation at several times
higher price.
(3) As of now, as a desktop OS on
x86, 32 and/or 64 bit addressing,
as far as I can tell, XP and/or
Windows 7 look okay with Linux
and OSS without huge advantages.
Where am I going wrong here?
(4) There are a lot of developers
writing for Microsoft, and just
what the 'platform' is is fairly
clear, e.g., the .NET Framework
of some version 2, 3, 4, 4.5 on
Windows XP, 7, or Server. So
there is some definiteness to
the platform.
On Linux I would have to learn about
the versions of the different
'distributions'. I don't even
know what would be involved.
Due to the definiteness and the
large number of developers,
on the Internet it
should be relatively easy to
get answer to questions
for the Windows platform.
Is this roughly correct?
(5) My biggest complaint with
Microsoft is the quality of
the technical writing in their
documentation. It looks like
the documentation is from
some nerds who know the software
but have no idea how to explain
it to others and writers who
know spelling, punctuation, and
a little more and are highly
diligent but, still, don't know
how to explain software. My
fear is that bad technical writing
is common in computing and that
in the world of Linux and OSS
the situation would be worse.
E.g., for serious questions,
maybe commonly the solutions is
just to read the code. Is this roughly
correct?
(6) So far I've been pleased with
the reliability of the Microsoft
software I've been using --
XP SP3, .NET Framework 4, Visual
Basic .NET, ASP.NET, ADO.NET,
IIS, and SQL Server. And from
some of the large, busy Web sites
standing on the Microsoft platform,
I suspect that Microsoft will be
able, maybe if at times I
talk to them one on one,
to provide what I need from
them for my site. Of course
then I will be using Windows
Server and developing on
Windows 7 with XP out'a
here.
(7) The Microsoft software
is from, right, Microsoft, and
since they wrote it and sell it,
my understanding is that they
support it. Actually via some
forums, I've already gotten some
quite good support for free from some
Microsoft people apparently
assigned to give serious answers
to serious questions. But it's
been a while since I had such a
question. But in the future I
anticipate questions, from me
and/or my staff (if my site is
successful enough for me to have
staff), and then I will want the
option of getting high quality
paid support for serious questions.
So, maybe my site is crashing;
I don't know why; and I want to
call for serious help. I suspect
that I can get such help from
Microsoft (even if I have to pay)
but am unsure just what the situation
is for Linux and OSS where, e.g.,
where's the company with account
executives?
(8) So far I like the Windows Common
Language Runtime (CLR) and .NET
Framework and the managed code
of Visual Basic .NET, C#, etc.
So far I'm writing just
Visual Basic .NET and am quite
happy with it; as far as I can
tell C# offers little or nothing
more but has just a different
flavor of syntactic sugar,
one related to C and that I don't like.
I believe that, compared with C#,
Visual Basic .NET
is easier to read on the page,
is less prone to bugs due to being
more verbose, and will be easier to
teach to new staff.
Where am I going wrong?
For the world of Linux and OSS,
I don't know what programming
language I would use
that I would like as well
as Visual Basic .NET.
What would the options be?
(9) From some of what I've seen of
high end server farms on the
Microsoft platform, the automation
of system installation, configuration,
monitoring, and management is
excellent, but my view has been
only from, say, 1000 feet up.
If this is so, then I'm impressed.
Where am I going wrong?
- kstrauser 13y agoI've known people who made the same decision for many of the same reasons, and the universal experience I've heard was "it was all nice until we had to scale, and then it got expensive quickly". If your stack works for you, great! That's the important part! But if your traffic and income scaled by a factor of 100, would you be turning a profit or desperately looking for financing? You're the only one who can answer that, and it's something to consider.
- GFischer 13y agoSame as kstrauser: Microsoft products are great, but they're more expensive to scale. I've been working with Microsoft products for close to a decade, and I think their software stack is great. However, for my current side project, I went with another platform (Groovy+Grails, running on the JVM), purely because of cost (and also because I wanted to learn it :) ). You can choose to be part of the BizSpark program and get all Microsoft software for free for 3 years, but you have to pay afterwards. Prices for Microsoft software hosting is usually 2 or 3 times what it costs for a mostly equivalent software. For example, something I'm using now (Amazon AWS), the price of a small Linux instance is $0,060/hr, while the equivalent Microsoft instance is $0,091/hr Azure pricing is too expensive for me, I discarded it. If I had money (maybe angel or VC backing), I might have considered it, but it's a bootstrapped side project.
- graycat 13y agoAs far as I can tell from my software timings, likely revenue from ads as I need to scale, and Microsoft's prices, I should be able to afford Microsoft as I scale. But at some point, if Microsoft's charges to me are so high I could hire a good team to refactor and convert my code to Linux and OSS, then I could save money. I have to believe that Microsoft has seen that issue before and has responses to it.
- lmm 13y ago> So, I'm eager to leave that work to a vendor that specializes in such things, and for such a vendor all I could see was Microsoft. So, right, it sounds like I want to pay money for my operating system, middle ware, tools, etc., and in a sense that is correct. I.e., if something goes wrong, then I want an 'account executive' to call and ask for help. Novell will sell you SuSE with support if that's what you want. No doubt there are other options. You're right that MS are probably the biggest, most obvious OS vendor that sell straight to customers. > Sure, Linux and Unix have a long and powerful background back through Sun, Silicon Graphics, BSD, AT&T, etc. But for my time on x86 I went from PC/DOS to OS/2 to Windows XP, and along that path, each year, I thought that the OS I was using was likely the most suitable for me on x86. E.g., instead of PC/DOS or OS/2 on x86, I was not going to buy a Sun or SGI workstation at several times higher price. Modern computers (even desktop/laptop) are much more similar to those workstations than to DOS-era consumer PCs. > As of now, as a desktop OS on x86, 32 and/or 64 bit addressing, as far as I can tell, XP and/or Windows 7 look okay with Linux and OSS without huge advantages. Where am I going wrong here? There's the customizability side. You say that you're not in the business of tools, but if you're in the business of making something that almost inherently becomes the business of making tools, because existing tools never fit exactly to your needs. Every serious programmer I've known customizes their environment, and linux makes this easier. But you're right that most of the value in linux comes from using it on the server. Once you've made the decision to run linux on the server it makes a lot of sense to run the same thing on your desktop. > (4) There are a lot of developers writing for Microsoft, and just what the 'platform' is is fairly clear, e.g., the .NET Framework of some version 2, 3, 4, 4.5 on Windows XP, 7, or Server. So there is some definiteness to the platform. On Linux I would have to learn about the versions of the different 'distributions'. I don't even know what would be involved. I think this is a red herring. Pick a reasonably popular linux platform at random, or pick a hosting service and go with their default / what they recommend. The fact that you've got a choice shouldn't be a downside. > Due to the definiteness and the large number of developers, on the Internet it should be relatively easy to get answer to questions for the Windows platform. Is this roughly correct? IME no. Open source platforms have a much stronger culture of mailing lists, IRC channels etc. because it's how the platforms themselves were developed. While there are probably more developers "out there" who know how to solve a particular problem in .net, the information is probably locked away in their heads or on internal-corporation servers. You've got better odds of finding someone to talk to on IRC or getting a question answered on StackOverflow with an OSS platform. > E.g., for serious questions, maybe commonly the solutions is just to read the code. Is this roughly correct? I won't say it doesn't happen, but my experience is that you've got a better chance of finding a high-quality, well-documented library with OSS - I think for the same reasons. There's a thriving community of open-source libraries for java/python/ruby/etc., and - very importantly - a global index for each of them, so it's easy to search for a library for your problem, and the popular ones tend to be well-documented. Whereas for .net there doesn't seem to be that culture. If you're talking about the languages themselves, again people seem much more willing to publish their own tutorials/guides when we're talking about an open source language. And IMO the official documentation for e.g. python or ruby is much clearer than MS'. > But in the future I anticipate questions, from me and/or my staff (if my site is successful enough for me to have staff), and then I will want the option of getting high quality paid support for serious questions. So, maybe my site is crashing; I don't know why; and I want to call for serious help. I suspect that I can get such help from Microsoft (even if I have to pay) but am unsure just what the situation is for Linux and OSS where, e.g., where's the company with account executives? Shrug. There are any number of consultancies. My experience is that the free support on the internet available for OSS is vastly superior to paid support. In fact, the free support available on the internet even for proprietary technologies is vastly superior to the paid support. But if this is what matters to you then you're making the correct choice. > as far as I can tell C# offers little or nothing more but has just a different flavor of syntactic sugar, one related to C and that I don't like. I believe that, compared with C#, Visual Basic .NET is easier to read on the page, is less prone to bugs due to being more verbose, and will be easier to teach to new staff. Where am I going wrong? VB.NET suffers somewhat from the poor reputation of previous variants; it is probably not as bad as all that. That said, more verbose code tends to be more prone to bugs, not less, and I imagine it's a less structured language. Less structure makes it easier to start a program but harder to maintain and develop it - for a maintainable program you need a language that enforces separation between different layers and makes it very clear which parts of the program can and can't affect other parts of the program. Whereas in the early stages it's very convenient if you can just change everything from everywhere. At a meta level, you're presumably not going to be writing all the code for long (at least if it's successful), and it sounds like you're not a programming expert yourself. So I think unless you're going to put a lot of effort into learning technical skills (which is probably not the best use of your time), you should probably accept that highly skilled programmers have particular preferences even if you don't understand them yourself (ideally you should find a CTO/cofounder you trust to make technical decisions, and then, well, trust them to make technical decisions). Hopefully you can at least see the value in using a language for which it is easy to hire skilled programmers; IMO VB.NET is not such a language, though you should of course use your own judgement. > For the world of Linux and OSS, I don't know what programming language I would use that I would like as well as Visual Basic .NET. What would the options be? Ruby or Python. They're pretty similar, so don't sweat the decision too much, it doesn't make much difference which you pick. > From some of what I've seen of high end server farms on the Microsoft platform, the automation of system installation, configuration, monitoring, and management is excellent, but my view has been only from, say, 1000 feet up. If this is so, then I'm impressed. Where am I going wrong? Some of MS' reputation is legacy, but what's impressive to one person may not be impressive to another. How easy would it be under this stack to e.g. automatically bring up another server whenever load rose above a certain threshold? Also, how well do the server automation tools interact with the other tools programmers like to use? Can I check my server automation into the same VCS I use for my code? Can I use the same toolkit to monitor the server itself and my application? Can I write my server definitions in the same IDE as my program? (This is why programmers are deeply mistrustful of GUIs; we have a lot of powerful tools for working very effectively with text formats and command lines, and these tend to work with any program. Whereas GUIs, when automatable at all, seem to each have their own macro language that doesn't work with any other tools).