SharePoint Sucks – And Here’s Why – Part 3

As promised, here’s the third installment of my reasoning of why I think SharePoint sucks. I’ve written two posts already, and if you land on this post, you may want to check out the previous posts first.

In the first post of this series, I nagged about how Bill Simser marketed SharePoint as a mediocre solution to a whole range of problems, arguing that if you settle for a mediocre blogging platform, you’ll get a mediocre wiki solution free of charge.

In the previous post of this series, I mentioned a few reasons why I think SharePoint sucks. However, and as several people noticed, only one of the items were really technically about SharePoint. The remaining posts were about how SharePoint was marketed both by Microsoft and the SharePoint fauna.

I also wrote a meta post to answer some of the community comments. Since then, more blog comments have been posted, and likely some that I’ve not found as well.

So, in this article, I thought I’d mention more reasons why SharePoint sucks, why it’s a faulty product, and why Microsoft had better be darn impressive with their next version, SharePoint 2010, soon to be available as public beta.

Code Quality

If you’ve ever tried to reflect the SharePoint DLLs, you may have encountered rather curious constructs. Here’s an example from SPList and it’s HasExternalEmailHandler property:

internal bool HasExternalEmailHandler
{
    get
    {
        bool flag = false;
        using (IEnumerator enumerator = this.EventReceivers.GetEnumerator())
        {
        Label_002D:
            while (enumerator.MoveNext())
            {
                SPEventReceiverDefinition current = (SPEventReceiverDefinition) enumerator.Current;
                if (current.Type == SPEventReceiverType.EmailReceived)
                {
                    goto Label_0037;
                }
            }
            return flag;
        Label_0037:
            flag = true;
            goto Label_002D;
        }
    }
}

This is actually one of the easier examples to understand; you’ll find plenty of goto constructs and variable naming that will leave you crying for mercy if you try to figure out what’s going on. The fact that it all works is probably a bigger mystery than Loch Ness.

Security

How can, by the deities, any product be recommended as a front end for public web pages when anyone able to append _layouts/importpolicy.aspx to a URL can take down the entire installation? SharePoint security and permission handling is a nightmare, and as I’ve previously written, anyone looking to use SharePoint as a web front end had better

  1. get their heads examined
  2. hire some seriously skilled security people
  3. prepare for some serious stability and security issuesor, more often than anything else
  4. fire their advisors who put them up with SharePoint as a web content management solution in the first place

Even Microsoft aren’t able to secure their own SharePoint sites, as I wrote in the web front end article, with presumably the best people in the world of SharePoint working for them. They use a custom solution to prevent anonymous users from seeing their innermost secrets. However, if you have a Live ID you can still see the SharePoint interface of their site (update: this has since changed and Microsoft has implemented SharePoint 2010 which doesn’t have this particular vulnerability).

A solution, by the way, is dead simple, so there really isn’t any reason why it’s not included in the default SharePoint installation. Instead, hundreds of public facing SharePoint sites are open and inviting to anyone with a large enough document management policy.

The permissions model is also a chapter of its own. By use of a very intricate model, SharePoint renders practical use of item level permissions almost impossible, again requiring users and customers to either limit their requirements or suffer performance and manageability issues.

CAML

I’m sure someone, somewhere, knows what went wrong the day that CAML was invented. Was the gods unhappy? Did the person who came up with the idea want to get back at their employer for something?

I want to add a single column to a single view. Just do display something as simple as a single line of text. Let’s see what it takes in, for example, the most basic of lists, the Custom List. In the screenshot below, I have closed the two views that are responsible for displaying the Title column, and only the Title column, of a custom list:

Figure 1

Notice the line numbers? The default view, the one that a List View Web Part uses to display a list, is 1016 lines long. The All Items view, used to list the single Title column in the AllItems.aspx view, is 1130 lines.

No wonder people fear writing custom views more than they fear death, cancer, or Marilyn Manson.

Are You Done Yet?

Hell no! I’ve got more coming. I could go on like this for volumes. I could talk about documentation. Development tools. HTML Compliance, or the possibility of making SharePoint compliant. Or a number of other topics. Not because I know secrets that are not known, but because SharePoint truly sucks.

However, in the next part I’m going to share with you some secrets that may explain why I’m still so fascinated by SharePoint, and why I’m still spending most of my waking hours thinking, writing, or talking about SharePoint.

And it’s partly your fault…

.b

NOTE: This article is part of a series. Make sure you read the entire series to get the full picture, especially the thrilling conclusion in Part 4.

People who just get half the picture are, well, half-witted.

Found this article valuable? Want to show your appreciation? Here are some options:

a) Click on the banners anywhere on the site to visit my blog's sponsors. They are all hand-picked and are selected based on providing great products and services to the SharePoint community.

b) Donate Bitcoins! I love Bitcoins, and you can donate if you'd like by clicking the button below.

c) Spread the word! Below, you should find links to sharing this article on your favorite social media sites. I'm an attention junkie, so sharing is caring in my book!

Pin It

Published by

Bjørn Furuknap

I previously did SharePoint. These days, I try new things to see where I can find the passion. If you have great ideas, cool projects, or is in general an awesome person, get in touch and we might find out together.

14 thoughts on “SharePoint Sucks – And Here’s Why – Part 3”

  1. "you’ll find plenty of goto constructs and variable naming that will leave you crying for mercy if you try to figure out what’s going on. The fact that it all works is probably a bigger mystery than Loch Ness."

    The reason for this is mostly that the code is obfuscated…

    Reflector can also generate this code since the IL generated from an foreach statement actually is implemented like this, with gotos.

    Don't assume that you get the 1:1 source code by using Reflector.

    Thanks
    /Jonas

    1. Here’s an even better idea… instead of using SharePoint, build your OWN application like a REAL developer where you have ALL control of your code!!!

  2. Jonas,

    That's very good to know, I've always wondered what kind of tool generates such code, as it would be improbable that humans would write such a thing.

    However, the goto-stuff is really just an example of bad code in SharePoint. Other code, for example non-obfuscated ASP.NET code, suffers from bad coding practices as well. Another example is the dubious implementation of SPWeb and SPSite disposing, or lack thereof.

    .b

    1. What exactly is “dubious” about how SPWeb and SPSite implement their Dispose methods? (They work fine.)

      1. If they work fine, there shouldn’t be a need for a dedicated to tool to check when it doesn’t work fine, and that tool would at least not have false positives or negatives.

  3. Goto labels in reflected code is *not* goto code in the source. Disassembled code cannot handle things like LINQ queries or even simple try/catch/finally blocks. So they substitute labels to try to compensate. Judging the quality of any app based on disassembled code from an obfuscated assembly is juding a book by it's cover.

  4. Hi Bil, I'm glad you decided to join in…

    Not sure if you have been holding on to that comment for a very long time, or why you weren't able to see the comment just above yours, but as you apparently missed, I mentioned that this was simply an example.

    I'll assume that means you agree with the rest of the post, though.

    .b

  5. @Bjorn,

    I did see your comment. You said "However, the goto-stuff is really just an example of bad code in SharePoint." I'm saying it's incorrect to judge the quality of a product (any product) from disassembled code via reflection of an obfuscated codebase. That's like basing your opinion of a movie from a critics review that never saw the flick. Reflected code is what it is but is not representative of the quality of the codebase written, it's a reflection of the tool that disassembled it (good, bad, or otherwise) and only conveys intent and some implementation details but not the entire picture. Necessary but not sufficient. Also you're taking a single method as an example from a codebase that has what, 500+ classes with 20+ methods in each? Back to your original statement I quoted, you're saying this is an example of bad code in SharePoint and that's not doing the product justice or making a fair comparison.

  6. SharePoint must be really bad, because most people that use a product all week are happy.

    Surprising MS needs to obfuscate sharpoint code. Who on earth would want such a poor product? Or maybe that why MS hides there source code?

  7. Sharepoint does suck and here's why:
    (2007..not sure about 2010 yet)

    1st off SP is a good idea. As the lead developer of a company that thinks it's innovative I have to chime in. I am actually a flash developer, strong background in XML,PHP, many other lingos and DBM's. Because of flash I use a lot of math (physics, trig,alg,geo, fractions) and I can recognize a worthy practice or language, which is why I'm learning C#, i think it's awesome. I did a couple of SP 2007 learning courses and 1 with a very good teacher. Sharepoint is powerful; so is a rocket ship, but are you trying to go outer space, or to the deli? out of the box it's good for office and oulook related functions, but if you want to use it for the power it's capable of, you're 100 yrs too early. I'm very mad that people that teach SP say it's easy to use…it's not. and it's not, not because the lingo is hard to grasp, it's hard because it's supremely unorganized and sloppy. The practices and the coding of sharepoint from personal study and 2 different complete courses tell me, that it can be manipulated, but there are too many resctrictions as to why it can't. If you can't figure it out, you need support, which is expensive. About 200 an hr for us, a non-profit. If you get something working there's a license issue, a big money issue.The folders are scattered and vast making anything outside of the box hard to get working. If you do manage to customize it, god forbid that it doesn't break anything else cuz 'then you'll be calling support for a lot longer than 1 hr. Debugging in SP is unnatural. Just shoot yourself. If there is a problem, you'll have to go through the complete SP bible to figure it out, line by line. We had a site from SP that broke, and our members were furious. It seems even after you hire SP professionals to build an external site, it's not necessarily their fault it doesn't work, and then you're off to relying on support again. 200 an hr.

Leave a Reply

Your email address will not be published.